第一部分
提示:本节内容主要来自CSAPP,《计算机组成结构化方法》以及《计算机组成原理(唐朔飞)》三本书的内容提炼。参考目前计算机408考试考点再来进行归纳。
一、《计算机组成原理》唐朔飞
1.1 计算机系统简介
1.1.1 计算机的软硬件概念(掌握)
首先,计算机系统是由硬件和系统软件组成的(CSAPP),而在教科书(唐)中计算机系统简单的由硬件与软件组成,软件又包括了系统软件和应用软件。对硬件与软件的分类与概念的需要有充足的把握。
- 硬件:计算机的实体部分,如主机、外部设备等
- 软件:由各类具有不同特殊功能的程序组成,往往寄寓于(唐)各类媒体(个人认为,更准确来说应该说是介媒,如RAM,ROM,磁带,磁盘,光盘,早期纸带),通常存放在计算机的主存或辅存内。
- 系统软件:系统程序,包括:标准程序库、语言处理系统、操作系统、服务程序、数据库管理系统、网络软件等。
- 应用软件:应用程序,用户根据任务所编制的各种程序。
1.1.2 计算机系统的层次结构(了解)
需要记一下多级层次结构,几张图记一下。
1.1.3 计算机组成和计算机体系结构(了解)
1.2 计算机的基本组成
1.2.1 冯诺依曼计算机特点(掌握)
六个特点
- 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成
- 指令和数据以同等地位存放于存储器内,并可按地址寻访。(按地址存储在存储单元)
- 指令和数据均用二进制表示。(01记录)
- 指令由操作码和地址码组成,操作码用来表示操作性质,地址码表示操作数在存储器中的位置。
- 指令在存储器内按顺序存放。通常顺序执行,在特定运算结果或根据设定的条件改变执行顺序
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成(现代DMA方式,不通过运算器)。
1.2.2 计算机的硬件框图(掌握)
部件功能:
- 运算器用来完成算术运算和逻辑运算,并将运算中间结果暂存在运算器内。
- 存储器用来存放数据和程序。
- 控制器用来控制、指挥程序和数据的输入、允许以及处理运算结果。
- 输入设备用来将人们熟悉的信息形式转换为机器识别的信息形式。
1.2.3 计算机的工作步骤(跳过吧,有时间可以看看)
1.3 计算机硬件的主要技术指标(熟记)
1.3.1 机器字长
指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。字长-精度-机器运算速度
直接影响加法器(ALU)、数据总线以及存储字长的位数.
1.3.2 存储容量
分清主存容量和辅存容量
主存容量:主存中存放二进制代码的总位数。
存 储 容 量 = 存 储 单 元 个 数 × 存 储 字 长 存储容量 = 存储单元个数 \times 存储字长 存储容量=存储单元个数×存储字长
MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长。(主存容量=2^MAR x MDR)
二、CSAPP
1.计算机漫游
1.1 信息是位+上下文
信息是位+上下文,例如hello world,程序的生命周期是从一个源程序(源文件)开始的,即程序员通过编辑器创建并保存的文本文件。
源程序实际上就是一个由01组成的位(比特)序列,8个位一组叫字节。字节表示程序中的文本字符。
这样的表示方法说明了一个基本思想:系统中的所有信息——包括磁盘文件,内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。
1.2 程序被其他程序翻译成不同格式
编译系统:预处理阶段→编译阶段→汇编阶段→链接阶段,每个阶段对应相应执行程序。
1.3 了解编译系统
优化程序性能,理解链接时出现的错误,避免安全漏洞。
1.4 处理器读解释存储在内存中的指令
1.4.1 系统的硬件组成
- 总线: 贯穿整个系统的一组电子管道。携带字节负责在各个部件间传递。被设计成传送定长的字节块,也就是字,机器字长32位(4个字节)或者64位(8个字节)。
- I/O设备:通过一个控制器或适配器与I/O总线相连。控制器与适配器之间的区别主要在于它们的封装方式。
- 主存:临时存储设备,在处理执行程序时,用来存放程序和程序处理的数据。从物理上来说,是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上,存储器是一个线性的字节数组,每个字节都有其唯一的地址(数组索引),这些地址是从零开始的。一般来说,组成程序的每条机器指令都由不同数量的字节构成。
- 处理器:中央处理单元(CPU),是解释(或执行)存储在主存中指令的引擎。处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。算术/逻辑单元(ALU),由一些单个字长的寄存器组成,寄存器都有唯一的名字。ALU计算新的数据和地址值。CPU操作包括:加载,存储,操作,跳转。
1.4.2 hello world的运行
1.5 高速缓存至关重要
意识到cache存在的程序员能够利用高速存储将程序性能提高一个数量级。
1.6 存储设备形成层次结构
在处理器和较大较慢的设备之间插入一个更小更快的存储设备的想法已经成为了一个普遍的观念。
1.7 操作系统管理硬件
操作系统有两个基本功能:
- 防止硬件失控的程序滥用;
- 向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。
操作系统通过几个基本的抽象概念(进程、虚拟内存和文件)来实现这两个功能。
1.7.1 进程
- 只考虑单处理器的情况。
- 进程在大多数情况下是在并发运行的。
- 操作系统持续保持跟踪进程运行所需的所有状态信息,也就是上下文,包括了PC和寄存器文件的当前值,以及主存的内容。
- 控制权在进程间转移时,就会发生上下文切换,由操作系统内核(kernel)管理。
- 内核不是一个独立的进程,它是系统管理全部进程所用代码和数据结构的集合。
1.7.2 线程
- 一个进程实际上由多个线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。
- 多线程比多进程更容易共享数据
1.7.3 虚拟内存
- 虚拟内存是抽象概念,对每个进程而言提供了一种假象,每个进程都是在独占使用主存。
- 每个进程看到的内存是一致的,称为虚拟地址空间
1.7.4 文件
1.8 系统之间利用网络通信(非408)
1.9 主要概念
1.9.1 Amdahl定律(非408)
主要思想:对系统某个部分加速时,其整体影响取决于该部分的重要性和加速性。
- T n e w , T o l d T_{new},T_{old} Tnew,Told 代表应用程序执行所需的目前用时和过去用时。
- α , k α,k α,k 表示部分执行时间占比和部分性能提升比例。
得到一个结论:想要显著加速整个系统,必须提升全系统中相当大部分的速度。
1.9.2 并发和并行
- 并发:一个同时具有多个活动的系统。(做的多)
- 并行:使用并发来使一个系统运行得更快。(做的快)
1 线程级并发
多核处理器:多核集成到一个集成电路芯片上。
超线程:也被称为同时多线程(simultaneous multi-threading),运行一个cpu执行多个控制流的技术。
2 指令级并行
- 处理器可以同时执行多条指令的属性。(流水线-pipeline)
- 超标量(superscalar)处理器:处理器可以达到比一个周期一条指令更快的执行速率
3 单指令、多数据并行
- 允许一条指令产生多个可以并行的操作,SIMD并行。
- 为了提高处理影像、声音和视频数据应用的执行速度。
1.9.3 计算机系统中抽象的重要性
三、计算机组成-结构化方法(后面补充……)
四、总结
提示:对三本书内容进行总结的部分,后续补充……