哈弗结构属于一种总线结构,它的特征是数据总线与指令总线相互分开。这样一来,CPU就能够同时从数据总线获取数据,并且从指令总线读取指令,从而避免CPU在读取数据和读取指令时出现瓶颈状况。当代的CPU都采用多级缓存结构,CPU无法直接从内存里读取数据和指令,而只能从L1缓存读取。现代CPU的L1缓存被分成数据和指令这两个部分,也就是L1数据缓存(简称为L1D)以及L1指令缓存(简称为L1I),CPU读取数据时是从L1D里读取的,读取指令则是从L1I中进行的。那为什么L2缓存和L3缓存没有分成数据和指令两部分?一方面,经过定量分析发现,这样划分后对性能的影响非常小;另一方面,若将缓存固定划分成数据和指令两部分,数据缓存或者指令缓存就不能被充分利用,会造成浪费。所以,L2缓存和L3缓存的数据部分与指令部分是共享的。基于此,编译器也就没必要把编译出来的代码段和数据段划分成不同的地址空间来存放了。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号