缓存架构
之前提到寄存器避免了CPU与内存时钟频率不一致而造成的长时间等待。
然而寄存器造价非常高。
于是CPU还有缓存的概念。缓存可以分为一级缓存。二级缓存。三级缓存。
一级缓存:大多主要存放。解码后的指令,数据。 速度比CPU慢 1-2倍。
二级缓存:大多数情况常用的的数据,速度比CPU慢10-20倍。
三级缓存:速度比CPU慢100-200倍。
内存则慢的多的多,大约慢1000-2000倍。
硬盘慢成蜗牛,从硬盘中获取资源是一种非常昂贵的操作。
访问数据顺序
一级缓存->二级缓存->三级缓存->内存->硬盘。
所以内存访问是有层层架构的。
南桥北桥
如果说这么多设备都一下子连接到总线。CPU会很崩溃。因为速度不一样,无法协调管理。
如何解决这么多设备速度不一样的问题呢?
计算机对速度比较慢的一些设备叫做低速设备(比如IO设备)
对速度较快叫做高速设备(比如内存)。
高速设备接入北桥然后接入到高速总线。
低速设备接入南桥然后接入到低速总线,最后一起汇总到高速总线。
CPU如何和外界交互?
CPU也需要连入北桥。连入的总线叫做FSB(前端总线)。
FSB模式技术的革新
FSB模式技术的革新
受前端总线的传输数据量限制。
AMD率先提出新技术来革新这种传统前端总线的设计。
Intel也紧跟着提出自己的新技术。
新的技术为:CPU与外界交换不必采用南桥北桥接入的方式。
内存不用接入到北桥,再接入到高速总线与CPU进行交互,可以直接接入CPU。
CPU通过MMU访问内存的内存控制器进行数据交换。
程序由指令和数据构成
CPU如何知道数据在内存中的什么位置?
计算机进入程序入口,读取指令,指令告诉计算机数据的位置。
CPU通过寻址方式查找数据在内存的位置。
设置访问方式(是读?还是写?)。
通过总线把数据从内存加载过来。
因此CPU获取数据 不是马上加载过来的。而是要通过许多步骤。
内存是没有数据的。
数据在真正访问前通常是在硬盘上--然而IO设备访问非常慢。比内存慢的多的多。
所以经常采取在内存划分cache,buffer。