寄存器访问为啥比Cache要快
寄存器应该是由“触发器”构成的,而cache应该是由SRAM构成的,两种存储机理不一样,所以访问时可靠下速度也不一样(凭脑袋记忆回答,请做参考)
■网友
以RISC为例,我要做一个Load: ldr r1, (读取r0的内容,加上0x1002,把计算结果作为地址去访问memory,最后把memory的内容load到r1里面。)我先要访问寄存器r0, 加上0x1002,才知道我要访问的地址吧,才有可能cache hit吧。所以你说register和cache哪个快。。。当然上面说的是data access. Instruction access的地址可直接从program counter拿。即使如此L1 cache还是要好几个cycles (modern processors)。 至于为什么是这样,因为就是这么设计的。1. 在Memory Hierarchy中,访问速度越快,允许做到的capacity越小,同时也越expensive. 作为memory hierarchy的金字塔的顶端,registers存在的意义就是为了提供最快的访问速度。因此寄存器的size也最小。按照32个GPRs,每个64bit 来计算,也只有256 bytes. 但是现在的L1 cache至少是16KB, 32KB往上了。size越大就意味着访问越慢。2. 访问memory和访问寄存器的方式有本质不同。Cache是memory access的一部分。memory access需要计算地址. 在out-of-order core中,还需要进load/store queue进行复杂的disambiguation, merging等。但register是作为一个instruction的opcode来访问的。比如ADD R3,R1,R2. 因此在cpu在decode的时候就知道我需要访问哪些寄存器。等到后面的stage的时候花1个cycle拿一下就好了。 【寄存器访问为啥比Cache要快】 
3. 寄存器用flip flops,cache用SRAM。flip flop比SRAM快
■网友
寄存器就直接连接在CPU计算单元上,cache则在内存控制器外面。
如果把CPU当成城市,数据当水果,寄存器是市中心便利店,cache是郊区大超市,内存是区县仓库,硬盘是果园。
■网友
构造不同是一方面,我觉得主要原因是访问方式,寄存器是底层指令的微程序设计或硬布线时就用上的,但是cache是通过操作系统调用
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
- 天赐的声音|33岁张雨绮为啥总离婚?看过这些照片就明白了,都是性感惹得祸
