主要是国外经典教材《深入理解计算机系统》《计算机体系结构量化研究方法》的阅读笔记
重点在于各种架构处理器内核、ISA、内存结构的设计思想,以及特性
现代计算机的CPU根本都是属于冯诺伊曼结构(也称为普林斯顿结构),后来基于冯诺伊曼结构改进而来的哈佛结构分离了取指总线和数据总线。冯诺伊曼在第一台二进制电子计算机EDVAC的草案中,明确指出计算机应该由运算器,存储器,逻辑控制部分,输入输出部件组成。
理论上几乎所有运算逻辑都可以用硬件实现,而处理器中数据的操作都是在寄存器上进行的。现在常见的CPU一般都集成16至32个通用寄存器(其中部分寄存器可能会有特殊用途)。也有少量例外如Sun公司的Sparc处理器使用了窗口寄存器的设计,OpenSparc T1中一个核心拥有640个64位整数寄存器
ISA即Instruction Set Architecture,指令集架构,规定了一系列处理器内部对程序员可见的寄存器以及支持的指令,也会包含其他内容如中断、异常处理和内存架构
微架构也即Microarchitecture(μArch),是一种处理器的具体实现,如指令解码单元的设计,总线结构,流水线结构,Cache等。而现在的处理器在微架构设计上还有其他特性如分支预测,乱序执行,超标量,超线程等
比如,Intel和AMD公司持有x86,他们可以设计制造遵循x86体系结构的处理器。Intel有面向高性能的酷睿(Core)以及低功耗的凌动(Atom)系列,这两个产品线的CPU核心基于不同的微架构设计。现在几乎所有智能手机使用的都是基于ARM的处理器,手机为了均衡功耗通常都会集成几个高性能核心和几个低功耗核心,比如Cortex-A76和Cortex-A55就是遵循相同ISA(ARMv8A)而使用不同微架构的实例。
许久之前,处理器ISA可以大致分为两类,一类是CISC,一类是RISC
使用CISC设计思想的处理器出现较早,主要特征是有相对较少的通用寄存器,较多的寻址方式,基本指令较多(很多指令将访存和运算操作放到一起),一个指令可能包含多个原子步骤,一般由多个周期完成
使用RISC设计思想的处理器之后才出现。RISC的主要推动者是《计算机体系结构量化研究方法》这本书的两个大牛作者Hennessy和Patterson,主要特征是有较多的通用寄存器,非常简单的寻址方式(一般基于Load-Store),基本指令较少,一个指令一般由单个或少数几个周期完成,且一般设计成流水线处理器
事实上现在的处理器早已没有严格意义的CISC和RISC之分,绝大多数市场表现较为成功的处理器都结合了两者的优点。x86早在486时期就在微架构设计上开始引入RISC技术,现在的x86已经完全成为了CISC和RISC的结合体。而ARM也引入了很多具有CISC风格的指令和特性
此外,指令数量也早已不能作为评判一种体系结构类型的标准,尤其是对于x86和ARM这种市场占有率较大的ISA,由于新需求和新应用的出现,指令集变得繁杂已经成为必然。为提高性能这些处理器绝大多数都添加了硬件浮点指令以及SIMD扩展指令,就连ARM面向单片机市场的Cortex-M系列处理器核心也已经支持数百条指令
主要关注456三章的内容,重点关注处理器的流水结构与存储器架构