计算机体系结构基础——1

从 CPU 架构说起


引言

CPU 是整个计算机体系结构的核心,体系结构研究 CPU 内部的结构,CPU 如何与内存,外设交互,如何支撑并配合操作系统。

资料主要来源:
《Linux 内核完全剖析–基于0.12内核》/ 赵炯 1 著. ——机械工业出版社,2010.1
《计算机体系结构》/ 胡伟武等著. ——北京:清华大学出版社,2011.6
其他资料参见篇后附录链接

三种 CPU 架构的介绍

  • X86 (80x86)2是 intel 设计的一系列 CPU 架构的泛称。使用 X86 架构生产CPU 的不仅有 intel 还有 AMD , AMD 首先把 X86 架构推广到 64 位,称为 AMD64 ,后来 intel 又推出与 AMD64 兼容的 intel64 ,现在两者一般统称为X86-64或者X64。 intel 公司现在活得很好,这个就不必多说。intel 公司由于自己的 CPU 产品代际提升率越来越感人,像挤牙膏一样,又被称为牙膏厂。
  • ARM 是英国 ARM 芯片设计公司设计的 CPU 架构的泛称。习惯上称为 ARM 架构。借着移动设备的东风,ARM 公司发展得很好,在 2016 年被日本软银以 320 亿美金的价格收购 。

上面两家公司除设计 CPU 外,还承接其他微处理器或者配件的设计业务,在技术上走在时代前列 。

  • MIPS 全称为 icroprocessor without interlocked piped stages,意思是“无内部互锁流水级的微处理器”它最早在 80 年代初由 Stanford 大学 Hennessy 教授的研究小组研制。后来 MIPS 公司成立并利用此架构生产微处理器,但在商业上不成功。MIPS 公司先后经历了被收购,又独立的过程,MIPS 架构也从风光走向没落。现在,龙芯公司花费了 500 万美元购买了 MIPS 的永久授权并基于 MIPS 架构开发了自己的指令集,用于龙芯系列的 CPU。

CPU的指令集

指令系统是微处理器(如 CPU , GPU , NPU )或微控制器(如中断控制器,磁盘控制器)对外提供的(Interface)。
有了指令集,CPU 的内部细节对用户就不可见,流水线,指令调度,分支预测, Cache 等技术,是 CPU 内部提高指令执行效率的技术,这是 CPU 的设计者主要关心和改进的部分,而对使用指令编程的用户而言则是透明的,用户只要看懂《XXX 用户手册》就可以。

为了支撑操作系统内核, CPU 的指令集中提供以下功能的相关指令(包括但不限于):

  1. 内存管理
    用于支撑多任务,虚拟内存,区分内核和用户的权限等。
  2. 任务(Task)管理
    用于支撑多任务等。
  3. 中断(Interruption)和异常(也作例外,Exception)处理
    用于 CPU 与外设 IO 并行,处理指令执行中可能发生的错误等。

在多核环境下,CPU 架构更复杂。

有些 CPU 支持超线程,一个物理核心对外表现为多个逻辑核心。

Intel-VTx 把 Hypervisor3 的部分功能集成在了 CPU 当中 。

同济大学的计算机本科教育体系

大二大三时感觉课程的设置混乱,课程之间无法衔接,是因为:

  • CPU 只做了 1 / 3。也就是第 1 部分。而用于支撑现代操作系统内核的 2,3 没有强调。
  • 学了 8086 (16位)的汇编,然后学了基于 80x86 (32位)的 Unix V6++,但是做了 MIPS (32位)的 CPU,两两之间存在鸿沟。
  • 编译原理课上得毫无用处,老师不懂实操。
  • 更加可怕的是,学生较强的自学能力反而让教师自我感觉良好,以为授课质量没有问题。现在课改的方向是加强核心课程的训练,鄙校鄙系教师大都是计算机应用专业出身,典型的能力撑不起野心。

  1. 目前在同济大学机械工程学院任教,这种真正懂计算机的优质人才竟然不引进到计算机系来。 ↩︎

  2. Intel 公司出的一系列处理器 8086,80186,80286 ,都是16位(以及8088等变种),而80386 80486 都是32位。从奔腾开始,已不再沿用 80586 这样的模式,因为更新太快了。但是大家习惯上都以586,686来称谓。现在的 PC 机处理器,都是向下一直兼容到8086,这些就统称为80x86在汇编语言下常提到“80x86指令集”这个术语,意思是兼容这些cpu的指令集。 ↩︎

  3. 是一个运行于 CPU / 物理硬件与操作系统之间的中间层,实现方式多样 ↩︎

你可能感兴趣的:(计算机体系结构)