1.1、计算科学与计算机系统
1.1、冯.诺依曼结构设计的计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成。
1.2、计算机体系结构的基本概念
**1.2.1、计算机系统的层次结构:
层次 | 名称 | 用户群体 |
---|---|---|
第6层 | 应用程序层 | 一般用户 |
第5层 | 高级语言层 | 普通程序员 |
第4层 | 汇编语言层 | 程序设计人员 |
第3层 | 操作系统层 | 系统管理人员 |
第2层 | 传统机器层 | 计算机系统设计者 |
第1层 | 微体系结构层 | 架构师 |
第0层 | 数字逻辑层 | 电子工程师 |
第0-2层为主要由硬件实现,第3-6层为主要由软件实现。
1.2.2、指令集
(1)计算机中最普通的指令格式:操作码+操作数(地址)。根据操作数的数量不同,可以将指令格式分为:零地址指令、一地址指令、二地址指令、三地址指令和多地址指令。
(2)指令的功能分类:从指令的操作码功能来考虑,通用计算机的指令系统中常见的指令类型包括:数据传送指令、算数运算指令、逻辑运算指令、程序控制指令、输入输出指令、处理器控制和调试指令。
(3)CISC:复杂指令系统计算机(Complex Instruction Set Computer) :追求强化指令功能,减少程序指令条数,以达到提高性能的目的。X86被认为是现存的唯一的CISC指令集。
SISC:精简指令系统计算机(Reduced Instruction Set Computer):尽量简化计算机指令功能,只保留功能简单、能在一个节拍内执行完成的指令,而把复杂的功能用一段子程序来实现。ARM术语RISC指令集架构。
1.2.3、存储系统
(1)计算机存储系统的层次结构
计算机系统的本质属性是时间和空间,即计算和存储。
第1层为寄存器组,寄存器是CPU的一部分;第2层为高速缓冲存储器(Cache),位于主存储器和CPU之间,存放运行程序近期将要用到的指令和数据;第3层为主存储器,是计算机的主要部件,存储系统的核心;第4层为辅助存储器,由软盘、硬盘组成,容量大、价格低;第5层为脱机存储器,指磁带机、光盘等。
(2)程序访问的局部性
时间局部性:最近访问过的内容很可能会在短期内被再次访问。
空间局部性:某个存储单元被访问,短时间内其附近的存储单元也会被访问。
(3)存储系统的三级层次“Cache-主存-辅存”
Cache-主存-辅存是存储体系中最重要的三级层次,通常将其分为“Cache-主存”和“主存-辅存”(虚拟存储系统)来讨论
A、Cache-主存
块是Cache与主存之间的信息传输单位,每块有若干个字或字节(Byte)组成。Cache-主存层次主要涉及的关键问题:
a、地址映射
Cache与主存储器间最基本的地址映射方式有三种:全相联映射、直接映射和组相联映射
全相联映射:指主存和Cache分成相同大小的数据块,主存的第i块放入Cache的任意一个位置。
直接映射:主存中的每一个快只能被放置到Cache中唯一的一个位置。
组相联映射:全相联映射与直接映射相结合的一种方式,是目前应该用最广泛的地址映射方式。
b、替换策略
在采用全相联映射和组相联映射的系统中,当主存向Cache传送一个新块而Cache已满时,就需要使用替换算法将Cache中的某一块换出。常用的替换算法有随机法(RAND)、先进先出法(FIFO)和最近最少使用法(LRU)
c、数据一致性
一致性是指同一份数据在不同的存储位置和多个拷贝应保持一致。
Cache的写方式:写直达(每次CPU修改Cache数据,立即更新到主存),写回(CPU修改Cache数据不立即更新,而是在某个时机更新)
多核处理器内核之间的缓存一致性通过缓存一致性协议来维护,MESI(Modified Exclusive Shared or Invalid)协议将Cache Line的状态分为修改、独占、共享和失效。
B、虚拟存储系统
程序在编写时都采用虚拟存储空间地址,运行时再将虚拟存储空间映射到实际物理内存中。程序在运行前保存在外部的存储器上,通常也就是保存在磁盘上,在运行时将程序的指令和数据都装入内存,这一过程中,内存(主存)与磁盘(辅存)的关系类似Cache-主存的关系。
1.3 、微处理体系结构
微处理器,即通常所说的中央处理器(CPU),根本任务是执行指令,在指令的执行过程中会对数据进行存取和处理。
1.3.1、单核处理器的基本结构
按照冯.诺依曼体系结构,传统的单核CPU有控制器和运算器俩个主要部件构成。现在新型的CPU大多集成了一些原先置于CPU之外的分立功能部件,如浮点处理器、高速缓存等。
CPU的逻辑结构如下图所示,主要由控制器、运算器和存储单元三部分组成,这三部分由CPU内部总线相连,程序运行时,CPU从内存中一条一条取出指令和相应数据,按指令操作码的规定,对数据进行运算处理,知道程序执行完毕。
控制器(控制单元):在控制器的指挥下,运算器、存储器和输入输出设备等部件协同工作,构成完整的计算机功能;
运算器(运算单元):实现数据加工处理等功能,核心部件是算术逻辑单元(ALU);
存储单元:包括CPU片内的高速缓存和寄存器组,保存等待处理或已经处理的数据。
1.3.2、多核处理器的基本结构
多核处理器(Chip Multi-Processor,CMP)的各核心之间需要进行数据的共享和同步,目前比较主流的高效通信机制有俩种,一种是基于总线共享的Cache结构,一种是基于片上的互联结构。
1.3.3、指令的执行
计算机运行程序过程就是指令的执行过程,CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,接着执行下一条指令,译码和执行,循环往复。
执行指令的5个基本阶段:
(1)取指令(Instruction Fetch,IF):将一条指令从主存中取出,放入寄存器中;
(2)指令译码(Instruction Decode,ID):取出指令后,计算机立即进入译码阶段;
(3)执行指令(Execute,EX):取出指令和译码结束后,立即执行指令;
(4)访存取数(Memory,MEM):根据指令需要,可能要访问主存,读取操作数;
(5)结果写回(Write-Back,WB):把运行结果数据“写回”某种存储形式中。
以上流水线过程可以在时间上重叠进行。