进行阶层式高速缓存不写回即无效的计算机系统以及方法与流程

文档序号:28959637发布日期:2022-02-19 12:36阅读:71来源:国知局
1.本技术涉及处理器的阶层式高速缓存(hierarchicalcache)的管理技术,尤其涉及指定密钥辨识码进行阶层式高速缓存不写回即无效的计算机系统、以及方法。
背景技术
::2.计算机系统中,存储器可有阶层之分。较上阶层的存储器拥有较高的速度、较低延迟性,但容量较小。大部分计算机系统的存储器阶层有以下四层(上层至下层排序):寄存器(registers);高速缓存(cachememory);系统内存(主存储器,如dram);以及磁盘(ssd或hd)。3.特别是,高速缓存也可以阶层设计,根据存取的快至慢排列,包括:第一级快取(l1)、第二级快取(l2)、以及第三级快取(l3,又称最末级高速缓存,lastlevelcache,简称llc)。阶层式高速缓存的管理将显著影响系统效能。4.为了实现对机密和/或敏感数据的保护,现有技术中出现了使用多个密钥对系统内存进行加密的透明全内存加密(totalmemoryencryption)功能,实现了以密钥为粒度对内存进行管理;但现有的阶层式高速缓存缺少相应的以密钥为粒度的管理功能,导致操作系统(operatingsystem,缩写os)无法以密钥为粒度管理阶层式高速缓存。技术实现要素:5.为了解决上述问题,本技术提出一种阶层式高速缓存(hierarchicalcache)的管理技术,可实现为计算机系统,或作为计算机系统操作方法。6.根据本技术一种实施方式实现的一计算机系统包括:一第一核心,制作于一第一晶粒上的一第一处理器,包括一解码器、一内存顺序缓存区、以及一第一核内高速缓存;以及一第一最末级高速缓存,制作于该第一处理器。响应基于单个指定密钥辨识码对阶层式高速缓存进行不写回即无效的一指令集架构的一第一指令,该解码器转换出至少一条微指令。根据该至少一条微指令,一不写回即无效要求通过该内存顺序缓存区供应给该第一核内高速缓存,再由该第一核内高速缓存交给该第一最末级高速缓存。响应该不写回即无效要求,该第一最末级高速缓存寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回一系统内存即将寻得的所有匹配缓存行无效。7.一种实施方式中,该不写回即无效要求载有该指定密钥辨识码。该第一最末级高速缓存根据该不写回即无效要求所载的该指定密钥辨识码,寻出自身匹配该指定密钥辨识码的所有匹配缓存行。8.一种实施方式中,本技术计算机系统还包括一第一存储单元,存储解析自该第一指令的该指定密钥辨识码。该不写回即无效要求不载有该指定密钥辨识码。该第一最末级高速缓存在接收到该不写回即无效要求时,是自该第一存储单元取得该指定密钥辨识码,据以寻出自身匹配该指定密钥辨识码的所有匹配缓存行。9.本技术一种实施方式使用到探听过滤器技术,以下描述。10.一种实施方式中,该第一处理器还包括一第一探听过滤器。该第一最末级高速缓存相应自身各匹配缓存行发出一探听要求,通过该第一探听过滤器传递给该第一核内高速缓存。各探听要求载有所对应的匹配缓存行在阶层式高速缓存中通用的一标志。相应各探听要求,该第一核内高速缓存寻出自身符合该探听要求所载该标志的缓存行,不写回该系统内存即将寻得的缓存行无效。11.一种实施方式中,该第一处理器还包括一第二核心,该第二核心包括一第二核内高速缓存。各探听要求亦由该第一探听过滤器传递给该第二核内高速缓存。相应各探听要求,该第二核内高速缓存寻出自身符合该探听要求所载该标志的缓存行,不写回该系统内存即将寻得的缓存行无效。12.一种实施方式中,本技术计算机系统还包括制作于一第二晶粒的一第二处理器。该第二处理器包括一第三核心、以及一第二最末级高速缓存。该第三核心包括一第三核内高速缓存。该第一最末级高速缓存还将该第一核内高速缓存所交给的该不写回即无效要求,经该第一晶粒、以及一第二晶粒之间的一通道,传递给该第二最末级高速缓存。响应所接收的该不写回即无效要求,该第二最末级高速缓存寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回该系统内存即将寻得的所有匹配缓存行无效。13.一种实施方式中,该第二处理器还包括一第二探听过滤器。该第二最末级高速缓存相应自身各匹配缓存行发出一探听要求,通过该第二探听过滤器传递给该第三核内高速缓存。各探听要求载有所对应的匹配缓存行在阶层式高速缓存中通用的一标志。相应各探听要求,该第三核内高速缓存寻出自身符合该探听要求所载该标志的缓存行,不写回该系统内存即将寻得的缓存行无效。14.本技术一种实施方式使用到等待同步信号设计,以下描述。15.一种实施方式中,该第一最末级高速缓存无效其所有匹配缓存行后,回传一第一通知给该第一核内高速缓存。供应该第一最末级高速缓存该不写回即无效要求的该第一核内高速缓存处于等待同步信号状态,直至接收该第一最末级高速缓存回传的该第一通知,方寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回该系统内存,即将寻得的所有匹配缓存行无效。16.一种实施方式中,该第一处理器还包括一第二核心,该第二核心包括一第二核内高速缓存。该不写回即无效要求更通过该第一核心的该内存顺序缓存区供应给该第二核心,由该第二核心的该第二核内高速缓存交给该第一最末级高速缓存。该第一最末级高速缓存所响应的该不写回即无效要求是该第一核心、以及该第二核心中较早传来者。17.一种实施方式中,本技术计算机系统还包括一核心间中断处理器,接收该第一核心对应该不写回即无效要求而通过该内存顺序缓存区所发出的一中断要求,据以操作该第二核心的一重排缓存区,启动该第二核心的一微码的一中断设计,使该不写回即无效要求交给该第二核内高速缓存。18.一种实施方式中,该第一最末级高速缓存亦将该第一通知回传该第二核内高速缓存,启动处于等待同步信号状态的该第二核内高速缓存寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回该系统内存即将寻得的所有匹配缓存行无效。19.一种实施方式中,本技术计算机系统还包括制作于一第二晶粒的一第二处理器。该第二处理器包括一第三核心、以及一第二最末级高速缓存。该第三核心包括一第三核内高速缓存。该不写回即无效要求更通过该第一核心的该内存顺序缓存区、经该第一晶粒、以及一第二晶粒之间的一通道,供应给该第三核心,由该第三核心的该第三核内高速缓存交给该第二最末级高速缓存。响应所接收的该不写回即无效要求,该第二最末级高速缓存寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回该系统内存即将寻得的所有匹配缓存行无效。该第二最末级高速缓存无效其所有匹配缓存行后,回传一第三通知给该第三核内高速缓存,启动处于等待同步信号状态的该第三核内高速缓存寻出自身匹配该指定密钥辨识码的所有匹配缓存行,不写回该系统内存即将寻得的所有匹配缓存行无效。20.前述单个指定密钥辨识码的该第一指令涉及单个操作数。单个操作数指示一寄存器、或一系统内存地址、或一立即数,以取得该第一指令所要求的该指定密钥辨识码。21.本技术更有响应多个指定密钥辨识码的设计。22.一种实施方式中,响应基于多个指定密钥辨识码对阶层式高速缓存进行不写回即无效的一指令集架构的一第二指令,该解码器转换出至少一条微指令。根据相应该第二指令的该至少一条微指令,该等多个指定密钥辨识码存储于该第一核心的存储单元,且通过该内存顺序缓存区供应给该第一核内高速缓存的多笔不写回即无效要求,对应该第一核心的存储单元所存储的该等多个指定密钥辨识码,使目前指定密钥辨识码的不写回即无效完成后,才进行下一指定密钥辨识码的不写回即无效。23.一种实施方式中,该第二指令涉及双操作数,用以取得一密钥辨识码初步设定、以及一遮罩,使用该遮罩对该密钥辨识码初步设定进行遮罩掩码处理后,形成该第二指令所要求的该等多个指定密钥辨识码。24.一种实施方式中,该第二指令涉及双操作数,用以取得一系统内存地址、以及一密钥辨识码指定数量,该系统内存地址指示该系统内存上一列表中的一起始密钥辨识码,该第二指令所要求的该等多个指定密钥辨识码根据该系统内存地址、以及该密钥辨识码指定数量自该列表取得。25.根据本技术技术,使阶层式高速缓存具备相应的以密钥为粒度的管理功能;当启用透明全内存加密功能时,操作系统可以以密钥为粒度管理阶层式高速缓存。26.下文特举实施例,并配合附图,详细说明本
发明内容。附图说明27.图1a为本技术isa指令wbinvd_single_keyid的一种指令架构;28.图1b为本技术isa指令wbinvd_multiple_keyids的一种指令架构;29.图1c为本技术isa指令invd_single_keyid的一种指令架构;30.图1d为本技术isa指令invd_multiple_keyids的一种指令架构;31.图2a为方块图,根据本发明一种实施方式图解一处理器200以及其上的一核心core_1;32.图2b为根据本技术一种实施方式图解阶层式高速缓存的缓存行(cacheline)的格式250;33.图3图解根据本技术一种实施方式实现的一计算机系统300,其中使用探听过滤器(snoopfilter)技术;34.图4a、4b图解根据本技术另一种实施方式实现的一计算机系统400,是关于不使用探听过滤器的多核心、以及多晶粒设计;35.图5图解根据本技术另一种实施方式实现的一处理器500,其中,核内高速缓存只包括第一级高速缓存l1,且多核共用第二级高速缓存l2;以及36.图6图解根据本技术一种实施方式实现的多核架构的一计算机系统600。37.【符号说明】38.102、112、132、142:操作码(opcode);39.104、114、116、134、144、146:操作数(oprand);40.106、108、110、118、120、122、136、138、140、148、150、152:指令架构;41.200:处理器;42.202:系统内存;43.204:指令高速缓存;44.206:解码器;45.208:指令缓存器(xib);46.210:指令转译器(xlate);47.212:寄存器别名表(rat);48.214、218:保留站(rs);49.216:内存顺序缓存区(mob);50.220:执行单元;51.222:本地密钥辨识码;52.224:探听过滤器;53.226:通知的传送路径;54.250:缓存行格式;55.252:有效位;56.254:密钥辨识码;57.300:计算机系统;58.302:写回且无效要求/不写回即无效要求;59.304:核内高速缓存60.306、310:探听要求;61.308、408、520:通道;62.400:计算机系统;63.402:核内高速缓存;64.500:处理器;65.502、504:第二级高速缓存;66.506:第三级高速缓存;67.508:第一级高速缓存;68.510:探听过滤器;69.600:计算机系统;70.602:中断设计的微码;71.604:寄存器列表(rat);72.606:保留站(rs);73.608:内存顺序缓存器(mob);74.610:中断要求;75.612:核心间中断处理器;76.614:重排缓存区(rob);77.616:中断设计的微码;78.core_1…core_n:核心;79.die_1、die_2:晶粒;80.imm16:立即数;81.invd_multiple_keyids、invd_single_keyid、wbinvd_multiple_keyids、wbinvd_single_keyid:指令集架构(isa)指令;82.l1、l2、l3:第一级、第二级、第三级高速缓存;83.llc_1、llc_2:最末级高速缓存;84.mob:内存顺序缓存区(mob);85.processor_1、processor_2:处理器;86.reg:寄存器;87.sto、sto_die1、sto_die2:存储单元;88.req:写回且无效要求/不写回即无效要求;89.r/m:寄存器或系统内存;90.snoop_1、snoop_2:探听过滤器;91.sys_mem:系统内存。具体实施方式92.以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本
发明内容。实际发明范围应依照权利要求来界定。93.现在计算机系统常有透明全内存加密(totalmemoryencryption)设计,使用多个密钥对系统内存进行加密处理,以增加计算机系统的安全性。各密钥可以使用一密钥辨识码(keyid)代表。计算机系统中可以包含一个密钥表,用于保存密钥和密钥辨识码之间的对应关系。进行加密运算时,可以通过查询密钥表得到与密钥辨识码对应的密钥。94.相应系统内存的多密钥加密处理,本技术令计算机系统将密钥辨识码(keyid)列为阶层式高速缓存(hierarchicalcache,例如,包括第一级、第二级、以及第三级高速缓存l1、l2以及l3)的管理参数之一。如此一来,阶层式高速缓存的使用可以配合透明全内存加密功能的运用。95.以阶层式高速缓存的写回且无效(writingbackandinvalidation,wbinvd)、或不写回即无效(invalidationwithoutwritingback,invd)为例,传统技术是施行在阶层式高速缓存所有缓存行上。然而,本技术提供的方案,可仅对与指定密钥辨识码(可仅指定单个值、也可指定好几个数值)匹配的缓存行作写回且无效(writingbackandinvalidation,wbinvd)、或不写回即无效(invalidationwithoutwritingback,invd)。例如,后文中要介绍的指令wbinvd_single_keyid和wbinvd_multiple_keyids会将与指定密钥辨识码匹配的缓存行作写回且无效;后文中要介绍的指令invd_single_keyid和invd_multiple_keyids会将与指定密钥辨识码匹配的缓存行作不写回即无效。如此一来,操作系统(operatingsystem,缩写os)可以以密钥为粒度管理阶层式高速缓存;由于稍后尚会用到的缓存行可留存在阶层式高速缓存上,计算机系统效能明显提升。96.本技术并提出计算机系统的多种实施方式,包括单核心的单个处理器、多核心的单个处理器、多处理器…等。97.本发明公开的处理器可为前述功能(包括:单个指定密钥辨识码的写回且无效;单个指定密钥辨识码的不写回即无效;多个指定密钥辨识码的写回且无效;多个指定密钥辨识码的不写回即无效)各提供一条指令集架构(instructionsetarchitecture,简称isa)的指令。该处理器支持的指令集架构不限,可为x86架构、也可为进阶精简指令集机器(advancedriscmachine,缩写arm)架构、mips(microprocessorwithoutinterlockedpipelinestages)指令集架构、risc-v(risc-five)指令集架构、sparc指令集架构、ibmpower指令集架构、或其他。98.一种实施方式中,本发明公开一处理器,其中提供一条指令集架构(instructionsetarchitecture,简称isa)的指令(以下以wbinvd_single_keyid标示),将阶层式高速缓存中,匹配单个指定密钥辨识码(key_id_s)的缓存行(cachelines)无效;特别是,匹配缓存行中,状态为m(modified,有更新)的缓存行,会先写回系统内存,方无效。此行为称为单个指定密钥辨识码(key_id_s)的匹配缓存行的写回且无效(writingbackandinvalidation)。99.图1a为本技术isa指令wbinvd_single_keyid的一种指令架构,除了辨识指令用的操作码(opcode)102,还包含一个操作数104。操作数104指示单个指定密钥辨识码(key_id_s)。操作数104可有多种形式。指令架构106显示,相应指令wbinvd_single_keyid,操作数104所载是寄存器(reg)标号,以自寄存器(reg)取得该指定密钥辨识码(key_id_s)。指令架构108显示,相应指令wbinvd_single_keyid,操作数104所载是寄存器标号或系统内存(r/m)地址,以自寄存器或系统内存(r/m)取得该指定密钥辨识码(key_id_s)。指令架构110显示,相应指令wbinvd_single_keyid,操作数104是立即数(imm16),该立即数即该指定密钥辨识码(key_id_s)。程序撰写上,指令wbinvd_single_keyid前可以用其他指令填写寄存器/系统内存/立即数,备妥该指定密钥辨识码(key_id_s),供指令wbinvd_single_keyid藉该操作数104取得。指令wbinvd_single_keyid前可还包括模式(包括实模式、保护模式、64-bit模式,等等)设置,以及决定操作数104所指示的指定密钥辨识码(key_id_s)的位宽。100.一种实施方式中,物理地址(pa)高位即密钥辨识码(key_id)。阶层式高速缓存各缓存行的缓存行信息可如图2b所示包括密钥辨识码(key_id)。若密钥辨识码与指令wbinvd_single_keyid指示的该指定密钥辨识码(key_id_s)相同,则代表该缓存行匹配该指定密钥辨识码(key_id_s)。在其它实施方式中,密钥辨识码(key_id)并不对应物理地址(pa)的高位,而是根据物理地址(pa)的高位所得到的;由于密钥辨识码(key_id)仍存在于各缓存行中,故仍可用于缓存行的匹配判断。任何以比对密钥辨识码(key_id)为基础的技术,都可用作本技术的缓存行匹配判断。101.另一种实施方式中,本发明公开一处理器,其中提供一条指令集架构(isa)的指令(以下以wbinvd_multiple_keyids标示),将阶层式高速缓存中,匹配多个指定密钥辨识码(key_id_s1…key_id_sn)的缓存行无效;特别是,匹配缓存行中,状态为m(modified,有更新)的缓存行,会先写回系统内存,方无效。此行为称为多个指定密钥辨识码(key_id_s1…key_id_sn)的匹配缓存行的写回且无效(writingbackandinvalidation)。102.图1b为本技术isa指令wbinvd_multiple_keyids的一种指令架构,除了辨识指令用的操作码(opcode)112,是藉两个操作数114、以及116取得数值,组合出多个指定密钥辨识码(key_id_s1…key_id_sn)。指令架构118显示,相应指令wbinvd_multiple_keyids,操作数114所载是寄存器(reg)标号,操作数116所载是寄存器标号或系统内存地址,以自寄存器(reg)、以及寄存器或系统内存(r/m)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。指令架构120显示,相应指令wbinvd_multiple_keyids,操作数114所载是寄存器标号或系统内存地址,操作数116所载是寄存器(reg)标号,以自寄存器或系统内存(r/m)、以及寄存器(reg)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。指令架构122显示,相应指令wbinvd_multiple_keyids,操作数114、116所载皆为寄存器(reg)标号,以自两个寄存器(reg)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。程序撰写上,指令wbinvd_multiple_keyids前可以使用其他指令填写寄存器/存储器,备妥组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值,供指令wbinvd_multiple_keyids藉这些操作数114、116取得。103.一种实施方式中,操作数114指示一密钥辨识码初步设定(key_id_initial),操作数116指示一遮罩(mask)。密钥辨识码初步设定(key_id_initial)经遮罩(mask)掩码处理后,可衍生出多个指定密钥辨识码(key_id_s1…key_id_sn)。104.在一实施例中,遮罩中,为“0”的比特将使得密钥辨识码初步设定(key_id_initial)的对应比特可有“1”、以及“0”两种变化;遮罩中,为“1”的比特使得密钥辨识码初步设定(key_id_initial)的对应比特不变化。单个密钥辨识码初步设定(key_id_initial)即衍生成多个指定密钥辨识码(key_id_s1…key_id_sn)。实际应用时,如果想得到某些比特的值为特定数值的多个指定密钥辨识码(key_id_s1…key_id_sn),可以将密钥辨识码初步设定(key_id_initial)中这些比特的值设置为特定数值,并将遮罩中对应比特的值设置为1,将遮罩中其他比特的值设置为0。举例来说,如果密钥辨识码初步设定(key_id_initial)为“101…010”,且遮罩为“111…011”,则掩码结果为“101…010”、以及“101…110”,代表两个密钥辨识码。如果密钥辨识码初步设定(key_id_initial)为“101…010”,且遮罩为“111…100”,则掩码结果为“101…000”、“101…001”、“101…010”、以及“101…011”,代表四个连续的密钥辨识码。105.在另一实施例中,密钥辨识码初步设定(key_id_initial)与遮罩(mask)按比特做异或运算,运算结果中为“0”的比特将使得密钥辨识码初步设定(key_id_initial)的对应比特可有“1”、以及“0”两种变化;运算结果中为“1”的比特使得密钥辨识码初步设定(key_id_initial)的对应比特不变化。单个密钥辨识码初步设定(key_id_initial)即衍生成多个指定密钥辨识码(key_id_s1…key_id_sn)。实际应用时,如果想得到某些比特的值为特定数值的多个指定密钥辨识码(key_id_s1…key_id_sn),可以将密钥辨识码初步设定(key_id_initial)中这些比特的值设置为特定数值,并将这些特定数值取反后作为遮罩中对应比特的值,将遮罩中其他比特的值设置为与密钥辨识码初步设定(key_id_initial)中对应比特的值相同。举例来说,如果密钥辨识码初步设定(key_id_initial)为“101…010”,且遮罩为“010…110”,则密钥辨识码初步设定(key_id_initial)与遮罩的异或运算结果为“111…100”,所以掩码结果为“101…000”、“101…001”、“101…010”、以及“101…011”,代表四个连续的密钥辨识码。106.一种实施方式中,操作数114指示一起始密钥辨识码(key_id_first),操作数116指示一密钥辨识码指定数量(num_of_keyids)。多个密钥辨识码(key_ids)可条列在系统内存中的一列表上,该多个密钥辨识码既可以是连续的,也可以是不连续的。操作数114可为该起始密钥辨识码(key_id_first)在系统内存的地址,指向该列表上、该起始密钥辨识码(key_id_first)的位置。根据操作数116所指示的密钥辨识码指定数量(num_of_keyids),始于该起始密钥辨识码(key_id_first)的多个指定密钥辨识码(key_id_s1…key_id_sn)可由该列表读出。107.一种实施方式中,关于多个指定密钥辨识码(key_id_s1…key_id_sn)的缓存行的写回且无效,处理器为以上遮罩掩码技术专门提供一指令wbinvd_multiple_keyids_1,与自列表取特定数量密钥辨识码的一指令wbinvd_multiple_keyids_2区别。108.一种实施方式中,本发明公开一处理器,其中提供一条指令集架构(instructionsetarchitecture,简称isa)的指令(以下以invd_single_keyid标示),对阶层式高速缓存进行匹配单个指定密钥辨识码(key_id_s)的缓存行(cachelines)的无效(invalidationwithoutwritingback),其中不涉及写回,无需考虑缓存一致性。109.图1c为本技术isa指令invd_single_keyid的一种指令架构,除了辨识指令用的操作码(opcode)132,还包含单个操作数134。操作数134指示该指定密钥辨识码(key_id_s)。操作数134可有多种形式。指令架构136显示,相应指令invd_single_keyid,操作数134所载是寄存器(reg)标号,以自寄存器(reg)取得该指定密钥辨识码(key_id_s)。指令架构138显示,相应指令invd_single_keyid,操作数134所载是寄存器标号或系统内存地址,以自寄存器或系统内存(r/m)取得该指定密钥辨识码(key_id_s)。指令架构140显示,相应指令invd_single_keyid,操作数134所载是立即数(imm16),即该指定密钥辨识码(key_id_s)。程序撰写上,指令invd_single_keyid前可以用其他指令填写寄存器/系统内存/立即数,备妥该指定密钥辨识码(key_id_s),供指令invd_single_keyid藉该操作数134取得。指令invd_single_keyid前可还包括模式(包括实模式、保护模式、64-bit模式,等等)设置,以及决定操作数134所指示的指定密钥辨识码(key_id_s)的位宽。110.另一种实施方式中,本发明公开一处理器,其中提供一条指令集架构(isa)的指令(以下以invd_multiple_keyids标示),对阶层式高速缓存进行匹配多个指定密钥辨识码(key_id_s1…key_id_sn)的缓存行(cachelines)的无效(invalidationwithoutwritingback),其中不涉及写回,无需考虑缓存一致性。111.图1d为本技术isa指令invd_multiple_keyids的一种指令架构,除了辨识指令用的操作码(opcode)142,是使用两个操作数144、以及146取得数值,组合出多个指定密钥辨识码(key_id_s1…key_id_sn)。指令架构148显示,相应指令invd_multiple_keyids,操作数144所载是寄存器(reg)标号,操作数146所载是寄存器标号或系统内存地址,以自寄存器(reg)、以及寄存器或系统内存(r/m)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。指令架构150显示,相应指令invd_multiple_keyids,操作数144所载是寄存器标号或系统内存地址,操作数146所载是寄存器(reg)标号,以自寄存器或系统内存(r/m)、以及寄存器(reg)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。指令架构152显示,相应指令invd_multiple_keyids,操作数144、146所载皆寄存器(reg)标号,以自两个寄存器(reg)取得组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值。程序撰写上,指令invd_multiple_keyids前可以使用其他指令填写寄存器/存储器,备妥组合多个指定密钥辨识码(key_id_s1…key_id_sn)所需数值,供指令invd_multiple_keyids藉这些操作数144、146取得。112.一种实施方式中,操作数144指示一密钥辨识码初步设定(key_id_initial),操作数146指示一遮罩(mask);同前述遮罩掩码技术。113.一种实施方式中,操作数144指示一起始密钥辨识码(key_id_first),操作数146指示一密钥辨识码指定数量(num_of_keyids);同前述自列表取特定数量密钥辨识码的技术。114.一种实施方式中,关于多个指定密钥辨识码(key_id_s1…key_id_sn)的缓存行的无效(不写回),处理器为以上遮罩掩码技术专门提供一指令invd_multiple_keyids_1,与自列表取特定数量密钥辨识码的一指令invd_multiple_keyids_2区别。115.一种实施方式中,本发明在处理器的微码(ucode)有相应这些指令wbinvd_single_keyid、wbinvd_multiple_keyids、invd_single_keyid、以及invd_multiple_keyids的设计(即这些指令中的每一个都对应一组微码,这些微码都包含在ucode中),且可更在处理器的硬件上有相应修改。116.图2a为方块图,根据本发明一种实施方式图解一处理器200以及其上的一核心core_1。图示阶层式高速缓存包括第一、第二以及第三级高速缓存l1、l2以及l3。第一级、以及第二级高速缓存l1、以及l2为核心core_1的核内高速缓存。第三级高速缓存l3为可供其他核心共用的最末级高速缓存(lastlevelcache,简称llc)。在多核心的处理器设计中,核内高速缓存可以只包括第一级高速缓存l1,而第二级高速缓存l2在核心外,由多个核心共用;稍后会有相关说明例。117.一段指令自一系统内存202载入一指令高速缓存(instructioncache)204后,交给一解码器206解码。解码器206包括一指令缓存器(instructionbuffer,简称xib)208、以及一指令转译器(translator,简称xlate)210。指令缓存器(xib)208识别分割出本技术提出的无效指令(wbinvd_single_keyid、wbinvd_multiple_keyids、invd_single_keyid、或invd_multiple_keyids),而指令转译器(xlate)210将该指令转译为流水线硬件可辨识的至少一条微指令(microinstructions),驱动后续硬件,基于密钥辨识码,对第一、第二以及第三级高速缓存l1、l2以及l3进行写回且无效(writingbackandinvalidation)、或不写回即无效(invalidationwithoutwritingback)。所述动作可以是相应单个指定密钥辨识码(key_id_s)、或相应多个指定密钥辨识码(key_id_s1…key_id_sn)。在一实施例中,指令转译器(xlate)210基于微码(ucode,存储在一微码存储器)将该指令转译为流水线硬件可辨识的至少一条微指令。118.解码器206解码出的该至少一条条微指令是根据一寄存器别名表(registeraliastable,简称rat)212存入相应保留站(reservationstation,简称rs),再进行应用。该至少一条微指令包含一个无效微指令(匹配单个密钥辨识码的写回且无效微指令、匹配多个密钥辨识码的写回且无效微指令、匹配单个密钥辨识码的不写回即无效微指令、或匹配多个密钥辨识码的不写回即无效微指令),该无效微指令会经由保留站214触发一内存顺序缓存区(memoryorderbuffer,简称mob)216的操作,使第一、第二以及第三级高速缓存l1、l2以及l3无效与单个指定密钥辨识码(key_id_s)、或多个指定密钥辨识码(key_id_s1…key_id_sn)匹配的缓存行。某些实施方式中,部分微指令会经由保留站218触发执行单元(executionunit)220动作,将单个指定密钥辨识码(key_id_s)、或多个指定密钥辨识码(key_id_s1…key_id_sn)暂存于存储单元sto(可为静态随机存储器、动态随机存储器或寄存器),作为本地密钥辨识码222,再一一取出处理。在一实施例中,该至少一条微指令还包含用于异常检查(比如特权级检查)、内存地址跳转(即跳转到无效指令的下一条指令)等功能的微指令。存储单元sto除了可如图示,为核心core_1内存储器,也可有其他实施方式。在多核心设计中,本地密钥辨识码222可存储在多核心共用的存储单元中,其中,多核心共用的存储单元可以位于处理器的非核心(uncore)中。在另一实施例中,本地密钥辨识码222可存储在每个核心的第一、第二以及第三级高速缓存(l1、l2以及l3)内部的存储空间中。具体而言,内存顺序缓存区216发送无效要求给第一级高速缓存l1时,会携带本地密钥辨识码222,第一级高速缓存l1将接收到的本地密钥辨识码222保存在其内部的存储空间中;然后第一级高速缓存l1发送无效要求给第二级高速缓存l2,并携带本地密钥辨识码222;第二级高速缓存l2将接收到的本地密钥辨识码222保存在其内部的存储空间中;然后第二级高速缓存l2发送无效要求给第三级高速缓存l3,并携带本地密钥辨识码222;第三级高速缓存l3将接收到的本地密钥辨识码222保存在其内部的存储空间中。在一实施例中,执行单元220将单个指定密钥辨识码(key_id_s)、或多个指定密钥辨识码(key_id_s1…key_id_sn)暂存于存储单元sto之前,会先删除存储单元sto中之前保存的内容。119.以下相应本技术四种isa指令wbinvd_single_keyid、wbinvd_multiple_keyids、invd_single_keyid、以及invd_multiple_keyids说明图2a的硬件运作。需要说明的是,在程序代码中使用本技术前述四种isa指令时,需要在本技术前述isa指令之前使用至少一条设定指令(比如mov指令),以填写本技术前述isa指令的操作数,为本技术前述isa指令的执行做准备。120.首先讨论isa指令wbinvd_single_keyid,基于单个指定密钥辨识码(key_id_s)对阶层式高速缓存进行写回且无效(writingbackandinvalidation)。121.参阅图示,取自寄存器、或系统内存202、或解读自立即数的单个指定密钥辨识码(key_id_s)可载于一写回且无效要求,通过该内存顺序缓存区(mob)216实现的通信接口,发送至第一级高速缓存l1。载有该单个指定密钥辨识码(key_id_s)的该写回且无效要求可经由第一级高速缓存l1、以及第二级高速缓存l2,传递至第三级高速缓存l3。接收到该写回且无效要求后,第三级高速缓存l3根据该写回且无效要求所载的该指定密钥辨识码(key_id_s)找出自身匹配的所有缓存行(可能为多个),把其中有被修改过(m状态的缓存行)、且未存在于上级高速缓存(l2和/或l1)中的缓存行写回系统内存202,然后不论缓存行有无修改过地、将匹配指定密钥辨识码(key_id_s)的所有缓存行无效(例如,将匹配缓存行的一有效位设置为无效)。后文将结合图2b描述阶层式高速缓存(适用于第一、二、三级高速缓存)是如何根据指定密钥辨识码(key_id_s)找出自身匹配的所有缓存行。122.第三级高速缓存l3更会记录自身所有匹配缓存行的标志(以下称匹配缓存行标志)。一般阶层式高速缓存设计上,缓存行的使用会有标志注明。例如,不同阶层上,对应同样物理地址(pa)的缓存行采同样标志。同样快取内容在阶层式高速缓存中都采用同样标志。因此,第三级高速缓存l3所找出的匹配缓存行标志可用于第二级高速缓存l2、以及第一级高速缓存l1的缓存行匹配。第二级高速缓存l2、以及第一级高速缓存l1的缓存行匹配无须再参考指定密钥辨识码(key_id_s),而是改为参考第三级高速缓存l3分析出的匹配缓存行标志。在一实施例中,匹配缓存行标志包含密钥辨识码(key_id)、标签(tag)、索引(index)等。在另一实施例中,匹配缓存行标志包含物理地址(pa)。123.由于第三级高速缓存l3中,匹配该指定密钥辨识码(key_id_s)的缓存行可能有多个,因此匹配缓存行标志可能有多个。第三级高速缓存l3是向探听过滤器(snoopfilter)224发送多个探听要求(snooprequests);其中,各个探听要求带有一个匹配缓存行标志。这些探听要求由该探听过滤器224供应给第二级高速缓存l2,再供应给第一级高速缓存l1。124.相应第三级高速缓存l3传来的各探听要求,第二级高速缓存l2找出自身也与该匹配缓存行标志相同的一条缓存行(若存在)。若该条缓存行有被修改过(m状态)、且未存在于上级高速缓存(l1)中,则将之写回系统内存202后方无效(例如,将该条缓存行的一有效位设置无效);若该条缓存行没有被修改过(非m状态),则直接无效。相应第二级高速缓存l2传来的各探听要求,第一级高速缓存l1找出自身也以该匹配缓存行标志的一条缓存行(若存在)。若该条缓存行有被修改过(m状态),则将之写回系统内存202后方无效(例如,将该条缓存行的一有效位设置为无效);若该条缓存行没有被修改过(非m状态),则直接无效。125.藉由载有单个指定密钥辨识码(key_id_s)而一路经l1、l2传递到l3的该写回且无效要求、以及载有不同匹配缓存行标志自l3往l2、l1回传的这些探听要求,所有阶层式高速缓存l1、l2、l3中,匹配此指定密钥辨识码(key_id_s)的缓存行确实写回系统内存202,且一致无效。指令wbinvd_single_keyid完成。126.另一种实施方式中,内存顺序缓存区(mob)216递给阶层式高速缓存(包括l1、l2以及l3)的一写回且无效要求并不带有指定密钥辨识码(key_id_s)。微指令通过该保留站(rs)218操作执行单元220将指定密钥辨识码(key_id_s)存储在存储单元sto,作为本地密钥辨识码222。第三级高速缓存l3是在接收到该写回且无效要求后,才自存储单元sto取得本地密钥辨识码222,获得该单个指定密钥辨识码(key_id_s),进行后续动作(自身匹配缓存行的写回且无效,以及以探听要求令核内高速缓存的匹配缓存行写回且无效)。指令wbinvd_single_keyid完成。在一实施例中,第三级高速缓存l3可以通过中断方式自存储单元sto取得本地密钥辨识码。例如,第三级高速缓存l3可以向核心core_1发出一中断信号,核心core_1执行一中断处理程序,将存储单元sto中保存的本地密钥辨识码222写入第三级高速缓存l3的一寄存器中。在另一实施例中,第三级高速缓存l3可以直接从存储单元sto读取本地密钥辨识码。127.图2b为根据本技术一种实施方式图解阶层式高速缓存的缓存行(cacheline)的格式250。参考阶层式高速缓存的缓存行(cacheline)的格式250,字段252为有效位(valid),值为0表示该缓存行无效,值为1表示该缓存行有效。前文所述无效缓存行,就是将缓存行的有效位(valid)设为无效(将有效位的值设为0)。字段254记载的是密钥辨识码(key_id)。阶层式高速缓存根据指定密钥辨识码(key_id_s)搜寻匹配缓存行时,如果缓存行有效、且缓存行的密钥辨识码(key_id)与指定密钥辨识码(key_id_s)相同,则对应的缓存行为匹配缓存行。128.下面再来讨论isa指令wbinvd_multiple_keyids,基于多个指定密钥辨识码(key_id_s1…key_id_sn)对阶层式高速缓存进行写回且无效(writingbackandinvalidation)。129.请同时参阅图1b、2a,指令wbinvd_multiple_keyids的双操作数114、116指示的数值自寄存器、或系统内存202取出后,经执行单元220运算(遮罩掩码、或列表查询,具体运算方法见前文)而获得的多个指定密钥辨识码(key_id_s1…key_id_sn),作为本地密钥辨识码222存储在存储单元sto。不同于指令wbinvd_single_keyid只解析出单个写回且无效要求(对应该单个指定密钥辨识码(key_id_s),相应指令wbinvd_multiple_keyids解析出的是多笔写回且无效要求,对应本地密钥辨识码222所管理的多个指定密钥辨识码(key_id_s1…key_id_sn)。一种实施方式中,内存顺序缓存区(mob)216每次传递一笔写回且无效要求,并在该笔写回且无效要求处理完成后,方通过第一级高速缓存l1、以及第二级高速缓存l2,再将下一笔写回且无效要求传递给第三级高速缓存l3。130.一种实施方式中,各笔写回且无效要求是参考存储单元sto的本地密钥辨识码222形成,带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)之一。根据各写回且无效要求所带有的单个指定密钥辨识码(key_id_s#),第三级高速缓存l3进行后续动作(自身匹配缓存行的写回且无效,以及以探听要求令核内高速缓存的匹配缓存行写回且无效,具体动作细节见前文)。待带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)的多笔写回且无效要求所引发的程序都处理完毕,阶层式高速缓存l1、l2、l3中,匹配所有指定密钥辨识码(key_id_s1…key_id_sn)的缓存行确实写回系统内存202,且一致无效。指令wbinvd_multiple_keyids完成。131.另一种实施方式中,内存顺序缓存区(mob)216递给阶层式高速缓存(包括l1、l2以及l3)的多笔写回且无效要求并不带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)。不带有指定密钥辨识码(key_id_s#)的一写回且无效要求同样是从第一级高速缓存l1、第二级高速缓存l2一路传递给第三级高速缓存l3。第三级高速缓存l3是在接收到该写回且无效要求后,才自存储单元sto的本地密钥辨识码222取得指定密钥辨识码(key_id_s#),进行后续动作(自身匹配缓存行的写回且无效,以及以探听要求令核内高速缓存的匹配缓存行写回且无效,具体动作细节见前文)。藉由多笔写回且无效要求,第三级高速缓存l3反复访问存储单元sto,依次从本地密钥辨识码222取得该等指定密钥辨识码(key_id_s1…key_id_sn)进行操作。阶层式高速缓存l1、l2、l3中,与指定密钥辨识码(key_id_s1…key_id_sn)匹配的所有缓存行确实写回系统内存202,且一致无效。指令wbinvd_multiple_keyids完成。132.下面再来讨论isa指令invd_single_keyid,基于单个指定密钥辨识码(key_id_s)对阶层式高速缓存进行不写回即无效(invalidationwithoutwritingback)。133.请同时参阅图1c、2a及2b,取自寄存器、或系统内存202、或解读自立即数的单个指定密钥辨识码(key_id_s)可载于一不写回即无效要求,通过该内存顺序缓存区(mob)216实现的通信接口,发送至第一级高速缓存l1。载有单个指定密钥辨识码(key_id_s)的该不写回即无效要求可一路经第一级高速缓存l1、以及第二级高速缓存l2,传递至第三级高速缓存l3。接收到该不写回即无效要求后,第三级高速缓存l3根据该不写回即无效要求所载的该指定密钥辨识码(key_id_s)找出自身匹配的所有缓存行(可能为多个),不作系统内存202写回(无需考虑缓存一致性),直接将匹配指定密钥辨识码(key_id_s)的所有缓存行无效(例如,将匹配缓存行的有效位(valid)252(如图2b所示)设置为无效)。134.同前述技术,第三级高速缓存l3会记录自身所有匹配缓存行的标志(匹配缓存行标志)。第三级高速缓存l3找到的所有匹配缓存行标志是一对一载于多个探听要求(snooprequests)往探听过滤器(snoopfilter)224发送,由该探听过滤器224供应给第二级高速缓存l2,再供应给第一级高速缓存l1。135.相应第三级高速缓存l3传来的各探听要求,第二级高速缓存l2找出自身也为该匹配缓存行标志的一条缓存行(若存在),不作系统内存202写回(无需顾虑缓存一致性),直接将该条缓存行无效(例如,将该条缓存行的有效位(valid)252(如图2b所示)设置为无效)。相应第二级高速缓存l2传来的各探听要求,第一级高速缓存l1找出自身也以该匹配缓存行标志的一条缓存行(若存在),不作系统内存202写回(无需顾虑缓存一致性),直接将该条缓存行无效(例如,将该条缓存行的有效位(valid)252(如图2b所示)设置为无效)。136.藉由载有单个指定密钥辨识码(key_id_s)而一路经l1、l2传递到l3的该不写回即无效要求、以及自l3往l2、l1回传的该串探听要求,所有阶层式高速缓存l1、l2、l3中,匹配此指定密钥辨识码(key_id_s)的缓存行不作系统内存202写回、就直接无效。指令invd_single_keyid完成。137.另一种实施方式中,内存顺序缓存区(mob)216递给阶层式高速缓存(包括l1、l2以及l3)的不写回即无效要求并不带有指定密钥辨识码(key_id_s)。微指令通过该保留站(rs)218操作执行单元220将指定密钥辨识码(key_id_s)存储在存储单元sto,作为本地密钥辨识码222。第三级高速缓存l3是在接收到该不写回即无效要求后,才自存储单元sto取得本地密钥辨识码222,获得该单个指定密钥辨识码(key_id_s),进行后续动作(自身匹配缓存行的不写回就无效,以及以探听要求令核内高速缓存的匹配缓存行不写回就无效,具体动作细节见前文)。指令invd_single_keyid完成。138.下面再来讨论isa指令invd_multiple_keyids,基于多个指定密钥辨识码(key_id_s1…key_id_sn)对阶层式高速缓存进行不写回即无效(invalidationwithoutwritingback)。139.请同时参阅图1d、2a及2b,指令invd_multiple_keyids双操作数144、146指示的数值自寄存器、或系统内存202取出后,经执行单元220运算(遮罩掩码、或列表查询)而获得的多个指定密钥辨识码(key_id_s1…key_id_sn),作为本地密钥辨识码222存储在存储单元sto。140.一种实施方式中,内存顺序缓存区(mob)216是将多笔不写回即无效要求通过第一级高速缓存l1、以及第二级高速缓存l2,传递给第三级高速缓存l3。各笔不写回即无效要求是根据存储单元sto的本地密钥辨识码222形成,带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)之一。根据各不写回即无效要求所带有的单个指定密钥辨识码(key_id_s#),第三级高速缓存l3进行后续动作(自身匹配缓存行的不写回就无效,以及以探听要求令核内高速缓存的匹配缓存行不写回就无效,具体动作细节见前文)。待带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)的多笔不写回即无效要求所引发的程序都处理完毕,阶层式高速缓存l1、l2、l3中,匹配所有指定密钥辨识码(key_id_s1…key_id_sn)的缓存行不作系统内存202写回、就直接无效。指令invd_multiple_keyids完成。141.另一种实施方式中,内存顺序缓存区(mob)216传递给阶层式高速缓存(包括l1、l2以及l3)的多笔不作写回即无效要求并不带有上述多个指定密钥辨识码(key_id_s1…key_id_sn)。不带有指定密钥辨识码(key_id_s#)的不写回即无效要求是从第一级高速缓存l1、第二级高速缓存l2一路传递给第三级高速缓存l3。第三级高速缓存l3是在接收到该不写回即无效要求后,才自存储单元sto的本地密钥辨识码222取得指定密钥辨识码(key_id_s#),进行后续动作(自身匹配缓存行的不写回就无效,以及以探听要求令核内高速缓存的匹配缓存行不写回就无效,具体动作细节见前文)。藉由多笔不写回即无效要求,第三级高速缓存l3反复访问存储单元sto,依次从本地密钥辨识码222取得该等指定密钥辨识码(key_id_s1…key_id_sn)进行操作。阶层式高速缓存l1、l2、l3中,与指定密钥辨识码(key_id_s1…key_id_sn)匹配的所有缓存行不作系统内存202写回、就直接无效。指令invd_multiple_keyids完成。142.除了前述探听过滤器224,本技术更提供另一种实施方式实现核内高速缓存(包括l1、l2)进行写回且无效(或不写回即无效)。请参照图2a,所述实施方式是令核内高速缓存(包括l1、l2)接收到写回且无效要求(或不写回即无效要求)时,将接收到的写回且无效要求(或不写回即无效要求)保存到核内高速缓存(包括l1、l2)的内部寄存器(图示中未示出)中,并进入等待同步信号(sync)状态(不再执行任何操作)。写回且无效要求(或不写回即无效要求)会经核内高速缓存(包括l1、l2)一路传给最末级高速缓存(l3),使最末级高速缓存(l3)完成自身匹配缓存行的写回且无效(或不写回即无效),然后发送一通知,经路径226,送回核内高速缓存。处于等待同步信号状态的第二级高速缓存l2不再执行任何操作,直到接收到该通知后,方执行先前保存在内部寄存器(图示中未示出)中的匹配缓存行的写回且无效要求(或不写回即无效要求)。第二级高速缓存l2完成匹配缓存行的写回且无效(或不写回即无效)后,再发送一通知给第一级高速缓存l1,使处于等待同步信号状态的第一级高速缓存l1启动,执行先前保存在内部寄存器(图示中未示出)中的匹配缓存行的写回且无效(或不写回即无效)。如此实施方式中,传递于阶层存储器(l1至l2至l3)中的写回且无效要求(或不写回即无效要求)也可以有前述带有/不带有指定密钥辨识码(key_id_s#)的设计。在一实施例中,第三级高速缓存l3发送给第二级高速缓存l2、及第二级高速缓存l2发送给第一级高速缓存l1的通知为一比特(bit)的值1。与使用探听过滤器的实施例相比,本实施例中,最末级高速缓存(l3)可以直接将通知传递给核内高速缓存(包括l1、l2),而不需要通过探听过滤器传递。143.本技术还提供另一不使用前述探听过滤器224的实施方式实现核内高速缓存(包括l1、l2)进行写回且无效(或不写回即无效)。请参照图2a,所述实施方式是令核内高速缓存(包括l1、l2)接收到写回且无效要求(或不写回即无效要求)时,就开始进行自身匹配缓存行的写回且无效(或不写回即无效)的操作,并将接收到的写回且无效要求(或不写回即无效要求)一路传给最末级高速缓存(l3),使最末级高速缓存(l3)也进行自身匹配缓存行的写回且无效(或不写回即无效)的操作。如此实施方式中,传递于阶层存储器(l1至l2至l3)中的写回且无效要求(或不写回即无效要求)也可以有前述带有/不带有指定密钥辨识码(key_id_s)的设计。本实施例中,核内高速缓存(包括l1、l2)不必进入等待同步信号状态,而是与最末级高速缓存(l3)同时执行匹配缓存行的写回且无效(或不写回即无效)的操作,因而效率较高。144.以下介绍多核心的计算机系统。145.图3图解根据本技术一种实施方式实现的一计算机系统300,其中使用探听过滤器(snoopfilter)技术。晶粒die_1以及晶粒die_2各自包括处理器processor_1以及处理器proessor_2。各处理器processor_1/proessor_2包括多个核心core_1~core_n。各核心包括一核内高速缓存(例如,第一级、以及第二级高速缓存l1以及l2)。处理器processor_1令其上多个核心core_1~core_n共用一最末级高速缓存(如,第三级高速缓存l3)llc_1;且搭配最末级高速缓存llc_1,处理器processor_1设置一探听过滤器snoop_1。处理器processor_2上多个核心core_1~core_n共用一最末级高速缓存llc_2;且搭配最末级高速缓存llc_2,处理器processor_2设置一探听过滤器snoop_2。晶粒die_1以及晶粒die_2提供的两个处理器processor_1以及processor_2都连接一系统内存sys_mem。图例是晶粒die_1的处理器processor_1的核心core_i执行到本技术指令wbinvd_single_keyid、wbinvd_multiple_keyids、invd_single_keyid、或invd_multiple_keyids,进行基于密钥辨识码而作的阶层式高速缓存的写回且无效(writingbackandinvalidation)、或不写回即无效(invalidationwithoutwritingback)。146.核心core_i通过其内存顺序缓存区mob形成的通信接口,将写回且无效要求(或不写回即无效要求)302传送到核内高速缓存304,再传送给最末级高速缓存llc_1。根据所接收到的要求,最末级高速缓存llc_1找出其中匹配指定密钥辨识码(key_id_s#)的缓存行。关于写回且无效要求,最末级高速缓存llc_1是将匹配缓存行中,有被修改过(m状态的缓存行)、且未存在于上级高速缓存中的缓存行写回系统内存sys_mem,并不论缓存行状态地将匹配缓存行无效。关于不写回即无效要求,最末级高速缓存llc_1是不作系统内存sys_mem写回即无效匹配缓存行。最末级高速缓存llc_1所找到的匹配缓存行标志可能为多个,可分别载于多个探听要求306交给该探听过滤器snoop_1,再由该探听过滤器snoop_1交给处理器processor_1中各核心core_1~core_n的核内高速缓存,使符合该等匹配缓存行标志的缓存行写回且无效(或不写回即无效)。如此一来,处理器processor_1内,所有核心core_1~core_n的核内高速缓存、以及所有核心core_1~core_n共用的该最末级高速缓存llc_1上,匹配指定密钥辨识码(key_id_s#)的缓存行的写回且无效(或不写回即无效)完成。147.特别是,通过晶粒die_1以及晶粒die_2之间的通道308,最末级高速缓存llc_1会将核内高速缓存304所交给的要求传递给最末级高速缓存llc_2。根据所接收到的要求,最末级高速缓存llc_2找出其中匹配指定密钥辨识码(key_id_s#)的缓存行。关于写回且无效要求,最末级高速缓存llc_2是将匹配缓存行中,有被修改过(m状态的缓存行)、且未存在于上级高速缓存中的缓存行写回系统内存sys_mem,并不论缓存行状态地将匹配缓存行无效。关于不写回即无效要求,最末级高速缓存llc_2是不作系统内存sys_mem写回即无效匹配缓存行。最末级高速缓存llc_2所找到的匹配缓存行标志,也将载于探听要求310交给该探听过滤器snoop_2。探听要求310由该探听过滤器snoop_2交给处理器processor_2中各核心core_1~core_n的核内高速缓存,使符合该匹配缓存行标志的缓存行写回且无效(或不写回即无效)。如此一来,处理器processor_2内,所有核心core_1~core_n的核内高速缓存、以及所有核心core_1~core_n共用的该最末级高速缓存llc_2上,匹配指定密钥辨识码(key_id_s#)的缓存行的写回且无效(或不写回即无效)完成。148.在本实施例中,与前述技术相同,该要求302可带有指定密钥辨识码(key_id_s#),也可不带(载于阶层式高速缓存都可访问的存储单元,作为本地密钥辨识码,供阶层式高速缓存读取使用)。该要求302不带指定密钥辨识码(key_id_s#)时,处理器processor_1的核心core_i需先通过晶粒die_1以及晶粒die_2之间的通道308,将该指定密钥辨识码(key_id_s#)传递给处理器processor_2,并将写回且无效要求(或不写回即无效要求)302传送到核内高速缓存304。处理器processor_2可以把接收到的该指定密钥辨识码(key_id_s#)保存到其任意一个核心的存储单元或非核心的存储单元中。149.图4a、4b图解根据本技术另一种实施方式实现的一计算机系统400,是关于不使用探听过滤器的多核心、以及多晶粒设计。150.核心core_i通过其内存顺序缓存区mob形成的通信接口,将写回且无效要求(或不作写回即无效)req传送到核内高速缓存(包括l1以及l2)402后,核内高速缓存402再将写回且无效要求(或不作写回即无效)req传送给最末级高速缓存llc_1,然后核内高速缓存402进入等待同步信号(sync)状态。特别是,核心core_i可以通过本技术提供的中断设计(后文会结合图6详述),将同样要求req传递给其他核心(同处理器processor_1上的其他核心、以及另一处理器processor_2上的所有核心core_1…core_n),然后其他核心提供同样要求req给其中核内高速缓存后,核内高速缓存再将写回且无效要求(或不作写回即无效)req传递给最末级高速缓存,然后核内高速缓存进入等待同步信号(sync)状态。整个计算机系统400上所有核心的核内高速缓存都接收到相同要求req,且都被设定为等待同步信号(sync)状态。151.以处理器processor_1为例,所有核心的核内高速缓存都会把自身接收的要求req传送给最末级高速缓存llc_1。根据最早接收到的要求req,最末级高速缓存llc_1找出自身匹配指定密钥辨识码(key_id_s#)的缓存行。指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是处理器processor_1各核心共用的存储单元sto_die1(图示未示出,在一实施例中位于处理器processor_1的非核心中)备有的本地密钥辨识码提供。在一实施例中,核心core_i将要求req传送给核内高速缓存之前,会先重置各核心共用的存储单元sto_die1,再把本地密钥辨识码存入其中。更有实施方式是在处理器processor_1所有核心core_1…core_n内都备有本地密钥辨识码;最末级高速缓存llc_1是查询最早提供要求req的核心的本地密钥辨识码,获得指定密钥辨识码(key_id_s#)。关于写回且无效要求,最末级高速缓存llc_1是将匹配缓存行中,有被修改过(m状态的缓存行)、且未存在于上级高速缓存中的缓存行写回系统内存sys_mem,并不论缓存行状态地将匹配缓存行无效。关于不写回即无效要求,最末级高速缓存llc_1是不作系统内存sys_mem写回即无效匹配缓存行。最末级高速缓存llc_1完成要求req后,发送一通知,通知处理器processor_1所有核心core_1…core_n的核内高速缓存。核内高速缓存中,第二级高速缓存l2接收到通知后,就执行等待状态的要求req,令自身匹配指定密钥辨识码(key_id_s#)的缓存行写回且无效(或不写回即无效)。指定密钥辨识码(key_id_s#)可以是要求req所自带,也可以是存储单元sto_die1的本地密钥辨识码提供,也可以是自身核心所备的本地密钥辨识码。第二级高速缓存l2完成要求req后,又发送一通知,通知其上一层高速缓存l1。第一级高速缓存l1接收到通知后,就执行等待状态的要求req,令自身匹配指定密钥辨识码(key_id_s#)的缓存行写回且无效(或不写回即无效)。同样地,指定密钥辨识码(key_id_s#)可以是要求req所自带,也可以是存储单元sto_die1的本地密钥辨识码提供,也可以是自身核心所备的本地密钥辨识码。152.以处理器processor_2为例,所有核心的核内高速缓存都会把自身接收的要求req传送给最末级高速缓存llc_2。根据最早接收到的要求req,最末级高速缓存llc_2找出自身匹配指定密钥辨识码(key_id_s#)的缓存行进行动作。指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是处理器processor_2各核心共用的存储单元sto_die2(图示未示出,在一实施例中位于处理器processor_2的非核心中)备有的本地密钥辨识码提供,也可以是查询最早提供要求req的核心的本地密钥辨识码获得。在一实施例中,核心core_i将要求req传送给核内高速缓存之前,可以通过本技术提供的中断设计(后文会结合图6详述),将本地密钥辨识码传递给处理器processor_2的主核心(mastercore),主核心会先重置各核心共用的存储单元sto_die2,再把本地密钥辨识码存入其中。最末级高速缓存llc_2完成要求req后,发送一通知,通知处理器processor_2所有核心core_1…core_n的核内高速缓存。同前述,处理器processor_2所有核心core_1…core_n的第二级高速缓存l2脱离等待状态,完成要求req后,发送一通知,通知其上一层高速缓存l1。第一级高速缓存l1接收到通知后,也脱离等待状态,完成要求req。处理器processor_2所有核心core_1…core_n的阶层式高速缓存都完成处理器processor_1核心core_i提出的要求req。153.值得注意的是,在图4a、4b所示的实施例中,如果计算机系统400的核心core_i执行的是写回且无效要求req,则核心core_i在将写回且无效要求req传递给核内高速缓存402前,会先把写回且无效要求req传递给其它核心(晶粒die_1中处理器processor_1上的其他核心、以及晶粒die_2中处理器processor_2上的所有核心core_1…core_n,在一实施例中,核心core_i是通过晶粒间通道408将写回且无效要求req传递给晶粒die_2中处理器processor_2上的所有核心core_1…core_n),然后计算机系统400的所有核心同步执行写回且无效要求req。所有核心同步执行写回且无效要求req是指:计算机系统400的所有核心同时将写回且无效要求req传递给各自的核内高速缓存执行。在另一实施例中,所有核心同步执行写回且无效要求req还包含:各核心的核内高速缓存接收到写回且无效要求req后,同时把写回且无效要求req传递给最末级高速缓存,然后各核心的核内高速缓存进入等待同步信号(sync)状态。154.另外,在不使用探听过滤器实现阶层式高速缓存写回且无效的设计中,如果某一缓存行有被修改过(m状态的缓存行),各核心需要将最上级阶层式高速缓存中保存的该缓存行写回系统内存。举例来说,核心core_i的第一级高速缓存l1、第二级高速缓存l2以及第三级高速缓存l3中都保存了被修改过的(即m状态的)缓存行cacheline1,则核心core_i需要将第一级高速缓存l1中保存的缓存行cacheline1写回系统内存。核心core_i的第二级高速缓存l2以及第三级高速缓存l3中都保存了被修改过的(即m状态的)缓存行cacheline1,第一级高速缓存l1中没有保存缓存行cacheline1,则核心core_i需要将第二级高速缓存l2中保存的缓存行cacheline1写回系统内存。155.在另一实施例中,图4a、4b中的计算机系统400中的各个核心的核内高速缓存(包括l1、l2)接收到写回且无效要求(或不写回即无效要求)时,就开始进行自身匹配缓存行的写回且无效(或不写回即无效)的操作,并将接收到的写回且无效要求(或不写回即无效要求)一路传给最末级高速缓存(l3),使最末级高速缓存(l3)也进行自身匹配缓存行的写回且无效(或不写回即无效)的操作。本实施例中,核内高速缓存(包括l1、l2)不必进入等待同步信号状态,而是与最末级高速缓存(l3)同时执行匹配缓存行的写回且无效(或不写回即无效)的操作,因而效率较高。156.图5图解根据本技术另一种实施方式实现的一处理器500,其中,核内高速缓存只包括第一级高速缓存l1,且多核共用第二级高速缓存l2。157.处理器500中,核心core_1以及core_2共用一第二级高速缓存502,核心core_3以及core_4共用一第二级高速缓存504。核心core_1…core_4共用一第三级高速缓存506。发起本技术指令的核心core_1,在提供要求req给第一级高速缓存508,第一级高速缓存508再将要求req传递给第二级高速缓存502,第二级高速缓存502再将要求req传递给第三级高速缓存506。158.根据接收到的要求req,第三级高速缓存506找出自身匹配指定密钥辨识码(key_id_s#)的缓存行完成要求req动作。指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是备于这些核心core_1…core_4的共用存储单元的本地密钥辨识码(共用存储单元可以位于处理器500的非核心中),也可以是备于这些核心core_1…core_4内部存储单元的本地密钥辨识码。第三级高速缓存506完成要求req后,发送一串带有匹配缓存行标志的探听要求给探听过滤器510,以传递给第二级高速缓存502以及504,再更传递给各核心core_1…core_4的第一级高速缓存。第二级高速缓存502/504接收到各探听要求后,令自身符合匹配缓存行标志的一缓存行(若存在)写回且无效(或不写回即无效)。各核心core_1…core_4的第一级高速缓存接收到各探听要求后,令自身符合匹配缓存行标志的一缓存行(若存在)写回且无效(或不写回即无效)。阶层式高速缓存完成指定密钥辨识码的缓存行管理。159.另一种实施方式则不涉及探听过滤器510。发起本技术指令的核心core_1,在提供要求req给第一级高速缓存508时,也会通过如图5所示的核心间通道520、或本技术提供的中断设计(后文会结合图6详述),将同样要求req传递给其他核心core_2…core_4,其他核心core_2…core_4接收到同样要求req后,各自将接收到的同样要求req传递给自己的第一级高速缓存。整个处理器500上所有核心core_1…core_4的第一级高速缓存都接收到相同要求req后,除了将要求req往下一层高速缓存传递,还都被设定为等待同步信号(sync)状态。160.第二级高速缓存502会接收到核心core_1的第一级高速缓存、以及core_2的第一级高速缓存所传来的要求req。根据最早接收到的要求req,第二级高速缓存502设定为等待同步信号(sync)状态,并将要求req更递给第三级高速缓存506。第二级高速缓存504会接收到核心core_3的第一级高速缓存、以及core_4的第一级高速缓存所传来的要求req。根据最早接收到的要求req,第二级高速缓存504设定为等待同步信号(sync)状态,并将要求req更递给第三级高速缓存506。161.根据最早接收到的要求req,第三级高速缓存506找出自身匹配指定密钥辨识码(key_id_s#)的缓存行,完成要求req,令自身匹配指定密钥辨识码(key_id_s#)的缓存行写回且无效(或不写回即无效)。指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是备于这些核心core_1…core_4的共用存储单元的本地密钥辨识码,也可以是备于这些核心core_1…core_4内部存储单元的本地密钥辨识码。第三级高速缓存506完成要求req后,发送一通知,通知第二级高速缓存502以及504。第二级高速缓存502/504接收到通知后,脱离等待状态,执行要求req,令自身匹配指定密钥辨识码(key_id_s#)的缓存行写回且无效(或不写回即无效)。同样地,指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是备于这些核心core_1…core_4的共用存储单元的本地密钥辨识码,也可以是备于这些核心core_1…core_4内部存储单元的本地密钥辨识码。第二级高速缓存502完成要求req后,发送一通知,通知核心core_1以及core_2各自的第一级高速缓存(l1)。第二级高速缓存504完成要求req后,发送一通知,通知核心core_3以及core_4各自的第一级高速缓存(l1)。第一级高速缓存(l1)接收到通知后,脱离等待状态,执行要求req,令自身匹配指定密钥辨识码(key_id_s#)的缓存行写回且无效(或不写回即无效)。指定密钥辨识码(key_id_s#)可以是要求req所传来,也可以是备于这些核心core_1…core_4的共用存储单元的本地密钥辨识码,也可以是备于所属核心的内部存储单元的本地密钥辨识码。162.对于制作于两个晶粒上的两个处理器(各如处理器500),任一处理器发动本技术指令对阶层快闪存储器进行指定密钥标示码的管理时,就会通过晶粒间通道,启动另一处理器中所有核心都将同样要求req送入第一级高速缓存(l1)。如此一来,不同晶粒上的阶层式高速缓存都统一管理。163.在另一不涉及探听过滤器510的实施例中,图5中的处理器500中的各个核心的核内高速缓存(包括l1、l2)接收到写回且无效要求(或不写回即无效要求)时,就开始进行自身匹配缓存行的写回且无效(或不写回即无效)的操作,并将接收到的写回且无效要求(或不写回即无效要求)一路传给最末级高速缓存(l3),使最末级高速缓存(l3)也进行自身匹配缓存行的写回且无效(或不写回即无效)的操作。本实施例中,核内高速缓存(包括l1、l2)不必进入等待同步信号状态,而是与最末级高速缓存(l3)同时执行匹配缓存行的写回且无效(或不写回即无效)的操作,因而效率较高。164.本技术可提供中断设计,使多核架构能应付任一核心发动本技术指令的状况。165.图6图解根据本技术一种实施方式实现的多核架构的一计算机系统600。如图6所示,相关微码ucode(与图2a中的ucode可以是同一个ucode)包括中断设计602的微指令。核心core_1发起本技术指令,经译码器(例如译码器206)译码后生成的至少一条微指令中包含中断设计602的微指令。该至少一条微指令经由寄存器列表(rat)604、保留站(rs)606,被传递给执行单元(图示中未示出)、以及内存顺序缓存器(mob)608执行。执行单元(图示中未示出)可通过内存顺序缓存器(mob)608通过执行中断设计602的微指令发送一中断要求610给一核心间中断处理器612。中断要求610所带有的信息(message)可包括:目标核心(如,核心core_2)、以及中断原因(如,本技术提出写回且无效要求/不写回即无效要求req),可以由执行单元(比如alu等等,图示中未示出)在发送中断要求610前、通过执行其他微指令生成。核心间中断处理器612分析中断要求610,向目标核心core_2发出中断,其中注明中断向量号、以及中断原因(req)。通过核心core_2的重排缓存区(rob)614,待核心core_2当下执行的isa指令结束(retire),核心core_2通过执行与中断向量号对应的微码ucode之中断设计616的微指令,响应中断原因(req);例如,将同样要求req送入核心core_2的核内高速缓存。具体实现中,可以从中断向量表中选择一个保留或未定义的中断向量号用作本发明的中断向量号。本领域技术人员依据本发明中的中断设计602、616的功能,使用微码编写出满足本发明需求的中断设计602、616。166.另一种实施方式中,中断原因(req)是载于核心core_2内一存储空间。核心core_2会定时查看该存储空间(例如,可以采用轮询机制(polling),每隔固定的时间就查看一次),使同样要求req送入核心core_2的核内高速缓存。167.凡是以isa指令实现指定密钥辨识码(单个指定、或多个指定)的阶层式高速缓存管理(写回且无效、或不写回即无效)的计算机系统(单核心处理器、多核心处理器、或多处理器),都属于本技术技术范围。168.根据本技术技术,使阶层式高速缓存具备相应的以密钥为粒度的管理功能;当启用透明全内存加密功能时,操作系统可以以密钥为粒度管理阶层式高速缓存。169.虽然本发明已以优选实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围以权利要求书界定为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1