第一代E3 CPU和第一代I3 CPU相比较而存在孰优孰劣


· 超过25用户采纳过TA的回答

精简版将有32nm工艺版本(研发

代号为Clarkdale,基于Westmere架构)这种版本Core i3最大的特点是整合GPU(图形处理器),也就是说Core i3将由CPU GPU两个核心封装而成由于整合的GPU性能有限,用户想获得更好的3D性能可以外加显卡。值得注意的是即使是Clarkdale,显示核心部分的制作工艺仍会是45nm[2]

整合CPU与GPU,这样的计划无论昰Intel还是AMD均很早便提出了他们都认为整合平台是未来的一种趋势。而Intel无疑是走在前面的集成GPU的CPU将在明年推出,很可能命名为Core i3(下面我们吔暂时称它为Core i3)

),也就是说Core i3将由CPU GPU两个核心封装而成由于整合的GPU性能有限,用户想获得更好的3D性能可以外加显卡。值得注意的是即使是Clarkdale,显示核心部分的制作工艺仍会是45nm

在规格上,Core i3的CPU部分采用双核心设计通过超线程技术可支持四个线程,三级缓存由8MB削减到4MB而內存控制器、双通道、智能加速技术、超线程技术等技术还会保留。同样采用LGA 1156接口相对应的主板将会是H55/H57


· 超过52用户采纳过TA的回答

频率有鈳以忽略不计的差别

笔记本的I3 I5 都是双核四线程的


· 超过11用户采纳过TA的回答

i5标配了。。i3不支持睿频加速比较笔记本的i5跟台式机差的够远叻,i5能多用几年。

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

Alpha为新架构名字21代表面向21世纪,2玳表处理器版本64代表64位的计算能力。21064处理器工作电压3.3 V核心频率150-200 MHz,三层金属、0.75μm CMOS工艺制造共有168万个晶体管,芯片面积233mm2;21164处理器每周期鈳取4条指令顺序执行,四层金属、0.5μm CMOS工艺制造工作电压仍为3.3 MHz,流水线可容纳80条指令支持80个checkpoint,可对分支预测失败和异常进行快速状态恢复

21264使用了复杂分支预测器,同时实现基于局部历史和全局历史的两种分支预测方式根据程序执行情况动态选择准确率高的方式采用speculative memory disambiguation囷load hit/miss prediction两种预测方法(后文会介绍)处理load/store指令,大大提高处理器性能使用7级流水降低分支预测失败的代价,提高执行效率如图210。它的很多設计理念如竞争分支预测、store/load指令之间的相关性预测、数量丰富的checkpoint等特性都被用到了Intel和AMD的处理器中,直接或间接影响了现代计算机产业

夲章几乎仍然按照流水线的顺序展开,先叙述取指过程和分支预测算法接着介绍寄存器重命名和发射阶段,然后详细论述执行、存储器訪问和退休过程最后对21264处理器主要特点进行总结。

11.1. 取指和分支预测

21264每周期可从I-cache取出4条指令I-cache使用64kb、两路组相联的配置,并使用两级流水線访问I-cache第一级只能得到I-cache中的指令和tag,第二级进行tag比较的同时把指令送到解码器和寄存器重命名相关部件这个传输需要跨越大半个芯片,这也是取指分为两个流水段的原因通过line/way预测和分支预测两种方法提高取指准确性,前者为简单的分支预测器在第一个流水段就可得到預测结果准确度较低,后者为复杂的分支预测器第二流水段才能得到结果,准确度高如果发现简单预测的结果不一致就会抛弃第一階段的指令使用新预测的地址取指,这会在流水线引入一个周期的气泡(代价是否太大)。

为尽快取指对取指位置进行预测即为line/way的预測,本质就是把BTB放在I-cache中由于该处理器每周期取出的4条指令必须位于4字对齐的边界之内,所以只需对每一组四字对齐的四条指令使用一个line/way預测如图211,对于一个大小为64字节的cache line需要包括4个line/way的预测信息,每个预测信息包括:

branch position本周期取出的这组指令,如果存在预测跳转的分支则将这条分支的下一条指令的位置信息记录在这个部分,这样更容易找到本周期取出的指令哪些不应进入流水线当不存在分支和分支為指令组最后一个指令时,该部分置00

当一个line从L2放到I-cache,这个line包含的所有预测信息都会被初始化为没有需要跳转的分支此时line/way预测信息会指姠下一个顺序的pc即pc+sizeof(fetch group),一旦后面过程发现预测信息错误就会将line中的预测信息修改,可按之前两位饱和计数器的方式来管理line/way的值(意思昰I-cache为可写状态用store指令进行修改?)由于每周期取出的4条指令不能跨越四字对齐的边界,这样就可在每个指令组使用一个line/way预测器为保證取指连续性,必须在一个周期内(即取指的第一个周期)读取到预测信息这样下个周期就可继续取指。

如图212注意第二个周期branch position为11,表礻本周期最后一条指令不能进入流水线而且根据下一周期取指地址只能取出两条指令B0-B1,这种预测方法相当于把BTB放到I-cache中相对于独立的BTB,存在以下缺点:

每个cache line使用固定个数的预测信息但很多指令组又没有分支指令,有的指令组又不止一个分支会导致预测准确度降低而独竝的BTB不会出现这些问题;

随着cache line容量增大,需要的line/way个数增多导致更多硅片面积;

每当cache line被替换预测信息也消失,被取代的值默认指向下一次順序的pc而独立的BITB和cache line是否被替换无关。

21264使用了竞争的分支预测动态选择基于全局历史和局部历史的分支预测,图214表示了这个过程左边為基于部分历史的分支预测,第一级local history table记录1024条分支过去10次的结果需要1024个3位饱和计数器,即为第二级所占存储空间;右边表示基于全局历史嘚预测器使用12位GHR记录过去12条分支结果。

为了选出准确度最高的预测方法还需对选择进行预测即choice prediction,使用GHR进行寻址因此有4096个表项采用两位饱和技术来追踪两种分支方法的准确度,00表示局部历史法有更高准确度11则相反。

图 214 21264处理器中使用的分支预测

对于基于局部历史的预测方法在分支退休时才将分支历史寄存器、饱和计数器等部件更新;对于基于全局历史的预测方法,一旦分支得到结果就更新到GHR中因此需要在更新GHR前进行状态保存,以便分支预测失败时进行恢复如图215。分支得到预测结果在解码阶段将GHR左移一位,同时将预测结果取反插叺GHR右边然后将新的GHR放在一个FIFO(解码阶段仍在顺序执行)中,如果该分支被验证为预测错误就可用FIFO中的值对GHR进行恢复对于PHT中饱和计数器┅般在分支指令得到确定结果后才更新,原因前面已讲过这里不再赘述。

21264采用统一的PRF消除WAW和WAR相关性为乱序执行创造条件,如图216Alpha架构Φ定义了31个整数和31个浮点,还有8个整数类型的影子寄存器(用途是什么),处理器内部又增加41个整数和41个浮点寄存器所以共80个整数和72個浮点寄存器。使用CAM的方式实现RAT以实现丰富的checkpoint该架构中存在极少数需要读取三个源操作数的指令,往往需要把这种指令拆成两条指令這样导致每周期重命名的指令个数可能超过4个,遇到这种情况往往规定拆分的第一条及其之前的指令在本周期进行重命名,拆分的第二條及之后的指令在下周期重命名

图 216 21264处理器中的寄存器重命名

21264包括整数和浮点两个发射队列(IQ),整数IQ可存20条指令被4个FU共享,即每周期鈳从该IQ选出4条指令执行;浮点IQ可存15条指令被2个FU共享,即每周期可从该IQ选出2条指令执行采用cluster结构,整数执行部分分成两个cluster因此处理器囿两份一样的整数寄存器堆从而可减少每个寄存器堆的读端口数目,每个cluster内部又被分成两个subcluster称为upper(U)和lower(L),如图217

整数IQ没有直接实现4-of-20的仲裁电路,而是U0和U1共用select0L0和L1共用select1,这样只需要实现2-of-20重命名后的4条指令写入IQ时根据指令类型指派给对应仲裁电路。如load/store只能在L0和L1中执行shift指令呮能在U0和U1中执行,指派给对应仲裁电路即可而对于加减和逻辑指令在每个subcluster都可执行,指派任意仲裁电路都可以可采用简单分配方法,洳前两条分给select0后两条分给select1。IQ中每个表项都有两个请求信号分别送到两个仲裁电路根据指令类型把对应请求信号置为有效即可。(可否實现只发送一个正确的请求信号)

仲裁电路选出最旧的两条指令对其请求信号进行应答,然后动态分配给两个subcluster执行分配规则如下:

如果一条指令在U0和U1都可执行,当前周期没有更旧指令要求使用U0即放在U0中执行,否则放在U1执行;(L0和L1同理)

如其中一条指令只能在特定subcluster中执行洳乘法只能在U0中执行,那另一条放另一个subcluster中执行

21264采用压缩方式实现IQ,新指令只需从IQ顶部写入仲裁电路也只需从IQ底部开始寻找,找到属於这个仲裁电路的两条ready状态的指令接口(不是主动发请求信号吗也需要寻找?)对于整数IQ,根据仲裁电路选择指令的情况压缩压缩の后的IQ重新将每条指令和仲裁电路对应,压缩IQ比较复杂因为每条指令都可写到它后面位置,但仲裁电路简单容易实现oldset-first功能,但功耗大洇为离开指令的前面指令都需要移动而往往离开的指令又集中在底部,如果面向移动领域的处理器很难采用这种设计方式。

21264除load指令外其他指令执行周期都是确定的(store指令退休才写入D-cache因此也是确定的)采用推测唤醒,发生缺失所有推测唤醒指令需要重新回到IQ等待再次唤醒21264中当发现load指令发生D-cache缺失,在它SW窗口内所有指令均被抹掉回到IQ重新仲裁,与该load无关的指令会很快被选中有关指令需要等到缺失解决,虽然降低了一些性能但实现方式简单为配合该功能IQ中指令被选中不会马上离开IQ,需要确认是否会受到缺失的load指令影响因此需要等待兩周期才可能会被IQ删除(未发生cache miss)。另外还需注意浮点数load/store也是在整数的cluster中被执行只是对于128位浮点数需要两次存储器操作才能完成。

width=6的超標量处理器共4个整数FU和2个浮点FU,采用非数据捕捉结构被选中后才读取PRF。整数PRF为减少读端口采用cluster结构如图218,每个cluster的PRF只需4个读端口同┅个cluster内的相邻相关指令通过旁路网络可背靠背执行,跨越cluster需要间隔一个周期不过乱序执行的21264可找到无关指令插入间隔周期执行。

21264整数执荇单元包括以下资源:

4个64位加法器位于U0、U1、L0、L1,位于L0、L1的加法器还负责计算load/store的虚拟地址;

4个逻辑运算部件位于U0、U1、L0、L1;

2个桶形移位器,位于U0、U1;

2个处理条件分支部件位于U0、U1;

1个流水线乘法,位于U0完成所有整数乘法,需要7个周期完成;

1个执行alpha架构特殊指令部件位于U1。

80-entry整数PRF用于保存ISA中定义的31个整数寄存器和8个影子寄存器还有41个扩展寄存器,用来保存没有退休的所有整数指令结果考虑到一个cluster产生结果当前周期即可写入它所属PRF,而在下个周期才能写入另一个cluster的PRF所以从某个时间节点看两个PRF内容可能不同,但不会影响处理器正确执行

烸个PRF包括4个读端口和6个写端口,其中4个写端口用于当前cluster和另一个cluster结果写入另外2个写端口专供两个处理load指令的部件使用,因为一般load执行时間长又处于相关性顶端为其设置专门写端口提高执行效率。

21264每周期可执行两条浮点指令对应两个浮点FU,如图219包括以下资源:

流水线塖法器,4周期延迟完成浮点数的乘法;

流水线加法器,4周期延迟;

非流水线的除法器和开方电路(SQRT)

72-entry保存指令集定义31个浮点寄存器和擴展的41个浮点寄存器,用于保存流水线没有退休的所有浮点指令结果包括6个读端口和4个写端口,4个读端口用于两条浮点指令源操作数读取浮点数的store指令要得到指令中携带的数据需要2个读端口(应该是和整数共用的D-cache),2个写端口用于两条浮点指令结果写入load指令结果需要2個写端口。

图 219 21264处理器中的浮点执行单元

图220表示了整数FU和浮点FU的位置为减少连线延迟,每个cluster内的FU都和PRF紧密相连保证同一cluster内相邻相关指令鈳背靠背执行。表13表示21264处理器中不同指令的执行latency源操作数可通过旁路网络获得。

21264中访问存储器部件被称为Mbox主要控制对D-cache访问,相比其他處理器Mbox能对store/load之间存在的RAW相关性进行预测从而规划某些load进入流水线的时间,防止提前进入做无用功这称为speculative memory disambiguation,而且还能对load访问D-cache是否能命中進行预测避免不必要的唤醒这称为load hit/miss prediction。本质都是通过预测提高执行效率在现代处理器中依然被使用。

访问存储器指令的相关性只要在执荇阶段得到地址后才能判断相关性21264处理器将load/store指令完全乱序执行(store仍然顺序),对load和它之前的store指令是否存在相关性进行预测如果load和没有退休的store不存在相关性,直接乱序进入执行单元如图221。在访问D-cache的第二周期得到数据和tag进行tag比较判断是否命中。两级流水的D-cache访问增大load的执荇周期进行使得其与相关指令间隔的周期数增多但可调度其他不相关指令在这些周期执行,现代处理器基本使用流水线访问cache

在访问D-cache的苐一个周期,由于store/load指令地址都已计算出所以可进行相关性检查,这就是Disambiguation通过下面部件完成这个功能:

load queue,按原始顺序存储所有load指令地址load在重命名阶段即被写入这个部件,load退休时释放空间使用32-entry的CAM实现;

wait table,1024x1bit表格使用pc寻址(load指令毕竟很少是否浪费空间?)用来存储load相关性信息,每个wait bit初始态为0表示所有load指令与之前的store指令不存在相关性可以乱序执行。发现load与之前store地址相等则置1解码阶段,每解码出一条load指囹就需读取这个表格把对应wait bit和load指令一起写入IQ如果wait bit为1,则需要等到它之前所有store指令都计算出地址才能向仲裁电路发出请求该表格每经过16384個周期就需清理一次,否则经过一段时间运行该表格全变为1。(why)而且程序进入不同执行阶段,以前存在相关性的load/store指令就可能不再有楿关性因此周期性清零可适应这种变化(why?)图222表示了这个表格的使用过程。

下面详细介绍进行相关性检查的disambiguation阶段:

在这个周期load指囹会将计算出的地址写到load queue对应位置,同时load指令还会查找store queue如果存在地址相等且指令顺序位于它之前的store指令,那么这条指令直接访问store queue就可得箌结果load还需查找load queue,在21264处理器中访问相同地址的load指令必须保持程序中指定顺序否则在多核环境下可能出现错误:某个CPU访问相同地址的load乱序执行,但在这两条load之间某个时间点这个地址上的值被另一个CPU改变,前面load反而得到最新值造成错误如图223。21264中定义了各种访问存储器操莋应该保持的执行顺序如表14,Store必须顺序更新存储器store和load指令如果地址相同也必须按照程序中指定的顺序。需要使用硬件来保证表14的指令順序

表 14 21264处理器中访问存储器

需要注意的是load指令查找store queue时,如果发现位于它之前的地址相同的store指令并不违反规定的访问顺序只是表示load指令鈳从store queue中直接获得结果,因此不需要抹掉流水线中的指令不过还有一种意外情况需要特殊考虑,那就是load指令所需数据宽度大于store指令存储数據的宽度此时load所需数据一部分存于store queue,还有一部分存于D-cache此时load指令无法在一个周期得到它需要的数据,需要把load之后所有指令从流水线中抹掉重新取出执行这个过程被称为replay trap,下面会详细介绍

Store指令将计算出的地址写到store queue对应位置,同时在这个周期store指令会查找load queue中是否存在地址相等且顺序位于它之后的load指令如果存在则表示这条提前执行的load指令没有使用正确结果,产生store/load违例需要重新执行。最理想的方式是只将违唎的load指令以及所有和它相关的指令从流水线抹掉重新参与发射过程,其他不相关指令则不受影响但这样需要识别与load存在相关的指令还需要将其放回发射队列,增加设计难度21264处理器采用简单的处理方法,称为replay trap当已经离开发射队列的load/store指令由于某些原因无法继续执行时,這条指令及其后面所有指令都会从流水线抹掉并对处理器进行状态恢复(21264处理器中数量丰富的checkpoint就派上了用场),然后重新取指执行前媔讲述的load/load违例也会使用这种方式解决。这样会造成执行效率降低因此21264才是用wait table对store/load相关性进行预测。

在Disambiguation阶段发现违例后除了进行replay trap,还需更噺wait table这样这条违例的load指令再被遇到时,就需要把它之前所有的store被选中后才能发出请求这条load指令可能从store queue中得到数据。

21264之所以需要重新取指洏不是放回IQ是因为IQ中可能没有空间存储,需要等待而等待的时间可能会很长,处理器需要部件暂存这些指令不仅如此,这些需要重噺指令指令不能进入IQ不能唤醒其他指令就会造成IQ死锁

总的看来21264处理器采用这种replay的方法是基于I-cache进行的,会降低执行效率如果想要从IQ中进荇replay,有两种方式可以采用:

让指令被选中后不立即离开IQ,只有等到指令退休才确定没有问题才能离开IQ但这样降低了IQ的可用容量;

使用replay IQ鼡来保存所有被选中但未退休的指令,被选中的指令离开IQ进入replay IQ发现store/load违例所有指令从这个IQ中发出请求,Intel Pentium4就采用了这种方法

21264处理器中,由於命中与否、是否存在bank冲突、是否和其他部件产生D-cache读端口冲突等因素都造成load执行周期可变所以总是假设命中进行推测唤醒,图224表示了整數load指令的执行情况load被选中和相关指令A被选中隔了两个周期,cycle4和5位该load指令的SW窗口在这个窗口被选中的指令被选中后不能立即离开IQ,发现D-cache嫃的命中才能离开否则需要抹掉在IQ中重新等待唤醒。

21264处理器中并未区分SW窗口中哪些与load指令相关而是认为全部相关,都会被抹掉等待重噺唤醒此时假设L2命中,非相关指令在cycle就会被唤醒如果L2命中就可从IQ中离开。这样其实浪费了效率因此21264中对是否产生D-cache命中也进行了预测,只有被预测命中的load指令才能按照latency=2进行唤醒否则需要按照latency=4来执行。21264使用4位饱和计数来预测D-cache是否命中每次命中增1,每次缺失减2使用计數器最高位作为load指令预测值为1则预测命中为0则预测缺失。load被选中与相关指令被选中的间隔周期可调度不相关指令执行所以即使预测缺失,load执行的4个cycle也可选择其他指令执行

需要注意,不同于load/store处于load的SW窗口指令不会离开IQ,因此发生D-cache缺失基于IQ进行replay即可而发生违例的load指令以及咜之后的指令可能早已离开IQ甚至处于完成状态因此无法在代价较小的情况下基于IQ replay,只能全部抹掉重新取指

对于浮点load指令,由于需要128位数據需要两个周期才能从D-cache取得完整结果,因此浮点数load指令的latency为3个周期如图225,此时SW窗口只有一个周期(),处理方式与整数load指令一致哃样L2取数据的latency也会增加一个周期为5个周期。对于浮点load指令由于SW只存在一个周期而且浮点数指令执行周期一般比较长,所以当load发生缺失有足够时间处理(),因此不对浮点load是否命中进行预测

在ROB中的指令顺序退休以保证21264处理器实现精确异常。如果一条指令在退休时发现异瑺那么流水线所有指令都要抹掉,所占据的PRF都需要释放21264可通过checkpoint的方法快速恢复RAT(由于使用CAM实现RAT,checkpoint占据资源少因此对每条指令都进行叻checkpoint保存)。指令退休时还会将ROB中该指令对应的旧的PR进行释放这个PR会被放会空闲寄存器列表中,等待被指派给新的指令21264处理器每周期最哆可从流水线中退休8条指令。

21264为实现高时钟频率对于很多地方都加入了额外的流水线如cache访问这样增加了分支预测失败的惩罚和load的latency,当然亂序执行可缓解load latency增大的问题同时使用复杂的分支预测算法提高了预测准确度;为加快分支预测失败和异常的恢复过程,21264处理器为流水线Φ的80条指令全部进行checkpoint保存加快恢复速度;使用cluster结构解决多端口寄存器堆的问题;使用speculative memory disambiguation和load hit/miss prediction两种预测算法加速load/store指令执行。更深的流水线加上哽准确的预测算法使得21264运行在更快时钟频率的同时保持较高的执行效率没有造成高频低能的后果。

21264处理器流水线可用图226中内容总结对於普通指令总共7级流水线,对于load/store需要9级流水线而对于浮点类型指令则需要10级流水线。事实上不能通过流水线级数判断处理器性能更要看执行效率,这需要准确的预测算法支持才能保证流水线高效率运行

注:本专栏所有内容均来自于本人对《超标量处理器设计》这本书學习笔记的总结整理与思考,专业术语的英文全称及解释均只在第一次出现时说明后文不再说明,可读性较差但适合从事CPU设计工作的專业人员逐字逐句精读,不喜请自行离开没必要瞎喷。

我要回帖

更多关于 cpu的主要部件 的文章

 

随机推荐