为什么CPU不直接访问磁盘呢??
首先明确:CPU处理数据(小部分) CPU获取传输数据(大部分) 都需要消耗时间
内存和CPU的缓存其实作用是一样的,其实就是一个处于CPU和硬盘间的临时存放区,CPU所需访问与处理的数据都会经过这里,电脑工作时会把要用到的东西先从硬盘调用到内存里面,然后看情况进入CPU内部各级缓存,最终被CPU所调用。
磁盘读写速度60-90MB/s
内存读写速度大概50GB/s
而CPU处理速度远超过他们的极限,所以CPU的利用率很低
同样100M的内容 CPU直接与磁盘交互 速度是以磁盘的最大传输速度为准的,但是传输的量确实Cpu的量,导致CPU需要多次与磁盘交互,太慢了。速度全耗损在传输上了
但是要是CPU与内存交互,内存与磁盘交互。速度还是磁盘的速度,但传输量是内存的量,内存比CPU的缓存区大多了,导致一次传输的信息特别多。内存与磁盘的交互就少了。然后CPU与磁盘的交互虽然还是CPU的寄存器的量,但速度是内存的速度,比磁盘块几个数量级。
多级缓存的缘由?
CPU具有多级缓存的原因主要是为了提升执行效率并减少CPU与内存之间的交互,这种交互会降低CPU的工作效率。在计算机系统中,主存储器通常是一个较慢的存储设备,而CPU的处理速度相对较快。这就产生了一个速度不匹配的问题。
这就是为什么引入了多级缓存的概念。具体来说,当从内存中读取数据时,CPU不仅读取自己想要的部分,而是读取足够的字节来填入高速缓存行。根据不同的CPU,高速缓存行的大小也不同。例如,X86架构是32字节,而ALPHA架构是64字节。这种方式提高了处理速度,因为访问内存所花费的时间要比访问高速缓存多的多。
离CPU越近,速度越快,磁盘最慢,在磁盘与内存交互比内存与cpu交互慢得多。
现代CPU为了增加CPU读写内存性能,已经在CPU和内存之间增加了多级cache,典型的有三级,L1、L2和L3。
CPU读内存时首先从L1 cache找起,能找到直接返回,否则就要在L2 cache中找,L2 cache中找不到就要到L3 cache中找,还找不到就不得不访问内存。
越靠近 CPU 核心的缓存其访问速度越快,CPU 访问 L1 Cache 只需要 2~4 个时钟周期,访问 L2 Cache 大约 10~20 个时钟周期,访问 L3 Cache 大约 20~60 个时钟周期,而访问内存速度大概在 200~300 个时钟周期之间。