一、计算机系统概述
1.1 计算机发展历程
![image-20210405210532697](https://i-blog.csdnimg.cn/blog_migrate/e77084ff7fbaad5342d723b1cf569f03.png)
1.1.1 什么是计算机系统
-
计算机系统 = 硬件+软件,
-
硬件:计算机的实体,如主机、外设。
-
软件:由具有各类特殊功能的程序组成。
-
计算机性能的好坏取决于“软”、“硬”件功能的总和。
-
-
软件分为系统软件和应用软件。
- 系统软件:用来管理整个计算机系统,如操作系统、数据库管理系统(DBMS)、标准程序库、网络软件、语言处理程序、服务程序。
-
应用软件:按任务需要编制成的各种程序,如B站,王者荣耀,迅雷。
软件和硬件在逻辑上是等效的,但不是等价的。
1.1.2 硬件的发展
![image-20210405205631758](https://i-blog.csdnimg.cn/blog_migrate/b2de168878fa1cc1d4d5a78c864ba043.png)
-
第一代:电子管时代,体积超大,耗电量超大,使用机器语言编程。
-
第二代:晶体管时代,体积,功耗降低,出现面向过程的程序设计语言:FORTRAN,有了操作系统雏形。
-
第三代:中小规模集成电路时代,计算机主要用于科学计算,高级语言迅速发展,开始有了分时系统雏形。
-
第四代:大规模,超大规模集成电路时代,开始出现微处理器(CPU),个人计算机萌芽(PC)。
1.1.2.1 微处理器发展
![image-20210405210824426](https://i-blog.csdnimg.cn/blog_migrate/a76bc93d4350ccdb782f346b18046a33.png)
1.1.3 发展趋势
-
发展趋势:两极分化。
一极是微型计算机向更微型化、网络化、高性能、多用途方向发展。
另一极是巨型机向更巨型化、超高速、并行处理、智能化方向发展。
1.2 计算机系统层次结构
1.2.1 计算机硬件的基本组成
![image-20210405213043252](https://i-blog.csdnimg.cn/blog_migrate/c89157890d4aed4f24bc9d5b0f3944d3.png)
1.2.1.1 冯·诺依曼结构
- 存储程序:将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
- 在计算机系统中,软件和硬件在逻辑上是等效的,软件实现成本较低,硬件实现效率较高。
1.2.1.1.1 早期冯·诺依曼机
![image-20210405213632467](https://i-blog.csdnimg.cn/blog_migrate/9ce81a4cc565587e5a1e1b483a5cd565.png)
冯·诺依曼机特点:
- 计算机由五大部件组成。
- 指令和数据以同等地位存于存储器,可按地址寻访。
- 指令和数据均用二进制代码表示。
- 指令由操作码和地址码组成。
- 以运算器为中心。
早期的冯·诺依曼机以运算器为中心,且是单处理机。
冯·诺依曼机的最根本特征是采用”存储程序“原理,基本工作方式是控制流驱动程序。
冯·诺依曼结构计算机程序的功能都通过中央处理器(运算器和控制器)执行指令实现。
1.2.1.2 现代计算机的组织结构
在微处理器问世之前,运算器和控制器分离,而且存储器容量很小,因此设计成以运算器为中心的结构其他部件通过运算器完成数据的传递。现代计算机以存储器为中心。
1.2.1.2.1现代计算机的组织结构
![image-20210405214204871](https://i-blog.csdnimg.cn/blog_migrate/2a25584edb210f174b567d50d2f7f03d.png)
- CPU = 运算器 + 控制器
![image-20210405215136725](https://i-blog.csdnimg.cn/blog_migrate/c2f12be5ddd479c89f03898071c9bfa2.png)
目前绝大多数计算机仍遵循冯·诺依曼的存储程序的设计思想。
1.2.2 计算机的功能部件
![image-20210406140444296](https://i-blog.csdnimg.cn/blog_migrate/7728df3a3d1eeaa29e4afeb2b30d5be0.png)
1.2.2.1 输入/输出设备(I/O设备)
-
输入设备:将程序和数据以机器所能识别和接受的信息形式输入计算机,如键盘、鼠标、扫描仪、摄像头。
-
输入设备:将计算机处理的结果以人们所能接受的形式或其它系统所要求的信息形式输出。如显示器,打印机。
计算机的输入/输出设备实际酸奶机与外界沟通的桥梁,是计算机中不可缺少的一部分。
1.2.2.2 存储器
存储器是计算机的存储部件,用来存放程序和数据。
存储器分为**主存储器(**主存)和辅助存储器(辅存),CPU能直接访问的存储器是主存储器。辅助存储器中的信息必须调入主存储器后才能为CPU访问。
主存储器的工作方式是按存储单元的地址进行存取,即按地址存取。(相联存储器既可以按地址寻址又可以按内容寻址,又称按内容寻址的存储器)。
主存储器由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件可以存放一位二进制代码。将每个存储单元存储的一串二进制代码称为存储字(word),将存储字的位数成为存储字长,存储字长是1B(8bit)的偶数倍。
![image-20210406140957676](https://i-blog.csdnimg.cn/blog_migrate/29047c18a77d3fcac3f1ce5122fd5461.png)
存储体存放二进制信息。
地址存储器(MAR)存放访存地址,经过地址译码后找到所选的存储单元。
数据存储器(MDR)用于暂存要从存储器中读或写的信息。
- MAR用于寻址,所以MAR的位数对应存储单元的个数,也叫地址码长度,即MAR为10位,就有 2 10 2^{10} 210即1024个存储单元。
- MDR用于暂存存储器的信息,所以MDR的位数和存储字节相等,一般为字节的二次幂的整数倍。
虽然MAR和MDR是存储器的一部分,但在现代CPU中却是存在于CPU中的,另外高速缓存(Cache)也存在于CPU中。
地址译码器是主存的构成部分,不属于CPU。
另,1个字节(Byte)= 8bit,1B=1个字节,1b=1bit。
1.2.2.3 运算器
运算器是计算机的执行部件,用于进行算术运算(如加、减、乘、除)和逻辑运算(如与、或、非)。
![image-20210406143712180](https://i-blog.csdnimg.cn/blog_migrate/6c59ad205b703003aa16b23498cb7298.png)
运算器的核心是算术逻辑单元(ALU),运算器包含若干通用寄存器,用于暂存操作数和中间结果。如累加器(ACC),乘商寄存器(MQ),操作数寄存器(X),变址寄存器(IX),**基址寄存器(BR)**等,其中前三个寄存器是必须具备的。
运算器中还有程序状态寄存器(PSW),也称标志寄存器,用来存放ALU运算中得到的一些标志信息或处理机的状态信息。
- ACC:累加器,用于存放操作数,或运算结果。
- MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
- X:通用的操作数寄存器,用于存放操作数
- ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
![image-20210406144351834](https://i-blog.csdnimg.cn/blog_migrate/be2d6151d8a7ff5905cf7c76be147bb4.png)
1.2.2.4 控制器
控制器是计算机的指挥中心。控制器由程序计数器(PC),**指令寄存器(IR)和控制单元(CU)**组成。
PC用来存放当前欲执行指令的地址,可以自动加1以形成下一条指令的地址,他与主存的MAR有一条直接通路。在CPU中,PC用来跟踪下一条要执行的指令在主存储器中的地址。
IR用来存放当前的指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列;而地址码Ad(IR)送往MAR,用以取操作数。
![image-20210406145058563](https://i-blog.csdnimg.cn/blog_migrate/c0b17fbdee4d1e88ef4a70d59d1c435f.png)
-
CU:控制单元,分析指令、给出控制信号。
-
IR:指令寄存器,存放当前执行的指令。
-
PC:程序计数器,存放下一条指令地址,有自动加1功能。
完成一条指令需要三个步骤,即取指令,分析指令和执行指令。
![image-20210406145305646](https://i-blog.csdnimg.cn/blog_migrate/0ddd80f1782b893205bb35305df967d5.png)
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU),CPU和主存储器共同构成主机,除主机外的其他硬件装置统称为外部设备,简称外设。
下图所示为冯·诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器R、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改PC 以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)。
![image-20210406150445687](https://i-blog.csdnimg.cn/blog_migrate/bea80a69470fd454e463ed0c4c2abd21.png)
CPU和主存之间通过一组总线相连==,总线中有地址、控制和数据3组信号线。==MAR中的地址信息会直接送到地址线上,用于指向读/写操作的主存存储单元;控制线中有读/写信号线,指出数据是从CPU 写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
1.2.3 计算机的工作过程
![image-20210406153001531](https://i-blog.csdnimg.cn/blog_migrate/9d1bdd25f23d45cd4b8f728d951ba3a7.png)
![image-20210407175913923](https://i-blog.csdnimg.cn/blog_migrate/a8cdf66d37e486ec4d13a7ea06dbf92f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1fe208b4b67a8840dd7e280aa78a28b.png)
虽然指令和数据都以二进制形式存放在存储器中,但**CPU可以根据指令周期的不同阶段来区分是指令还是数据,通常在取指阶段取出的是指令,在执行阶段取出的是数据。**需要清楚的是,CPU只有在确定取出的是指令后,才会将其操作码送去译码,因此不可能依据译码的结果来区分指令和数据。
汇编程序员可以通过指定待执行指令的地址来设置PC的值,状态寄存器、通用寄存器只有为汇编程序员可见,才能实现编程,而IR、MAR、MDR是CPU的内部工作寄存器,对程序员均不可见。
1.2.4 计算机软件的分类
1.2.4.1 系统软件和应用软件
系统软件:是一组保证计算机高效、正确运行的基础软件,通常作为系统资源提供给用户使用。主要有操作系统、数据库管理系统(DBMS)、分布式软件系统、网络软件系统、语言处理程序、标准库程序、服务性程序等。
应用软件:是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算程序、工程设计类程序、数据统计与处理程序等。
数据库管理系统并不等于数据库系统,数据库系统是指在计算机系统中引入数据库后的系统,一般有数据库、数据库管理系统、应用系统、数据库管理员构成。数据库系统并不是系统软件。
1.2.4.2 计算机系统的多级层次结构
![image-20210406193658448](https://i-blog.csdnimg.cn/blog_migrate/6ac8572b90487855db646cf82381eb9d.png)
- 微程序机器层:这是一个实在的机器层,由机器硬件直接执行微指令。
- 传统机器语言层:也是一个实际的机器层,由微程序解释机器指令系统。
- 操作系统层:由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。
- 汇编语言层:为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。
- 高级语言层:是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。
下层是上层的基础,上层是下层的扩展。
1.2.4.3 三种级别的语言
- 机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
- 汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
- 高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
硬件能直接执行的语言只能是机器语言(二进制编码),硬件描述语言程序是电子系统硬件行为描述、结构描述、数据流描述的语言,并不能被直接执行。
寄存器对汇编语言不透明,汇编程序员要对寄存器进行直接操作。
![image-20210406194511617](https://i-blog.csdnimg.cn/blog_migrate/4e296ee78297e530fa10710bd1a91742.png)
高级语言翻译成机器语言程序有两种方式,一种是编译成汇编语言,再将汇编语言汇编为机器语言,或者直接编译为机器语言,以C语言为例,翻译之后会形成一个可执行文件,之后再执行时则不需要再次翻译。另一种方式是解释程序,这种方式会将源程序的语句逐条翻译为机器语言执行,每次执行都要翻译。
翻译程序是指把高级语言源程序转换成机器语言程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新编译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是一种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
1.3 计算机的性能指标
1.3.1 计算机的主要性能指标
![](https://i-blog.csdnimg.cn/blog_migrate/aef8d6a72c271ef6a2339b70004f6799.png)
1.3.1.1 机器字长
机器字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU 的寄存器位数、加法器有关。因此,**机器字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。**计算机字长通常选定为字节(8位)的整数倍。
计算机的位数,即机器字长,也就是计算机一次能处理的二进制数的长度。要注意的是,操作系统的位数是操作系统可寻址的位数,它与机器字长不同。一般情况下可通过寄存器的位数来判断机器字长。
机器字长是指CPU内部用于整数运算的数据通路的宽度。机器字长是指CPU内部用于整数运算的数据通路的宽度。CPU内部数据通路是指CPU内部的数据流经的路径及路径上的部件,主要是CPU内部进行数据运算、存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此,机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度。,主要是CPU内部进行数据运算、存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此,机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器宽度。
1.3.1.2 数据通路带宽
**数据通路带宽是指数据总线一次所能并行传送信息的位数
**。**这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。
各个子系统通过数据总线连接形成的数据传送路径称为数据通路。
1.3.1.3 主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16位)来表示存储容量。其中,MAR的位数反映存储单元的个数,MAR的位数反映可寻址范围的最大值(而不一定是实际存储器的存储容量)。
例如,MAR为16位,表示
2
16
2^{16}
216= 65536,即此存储体内有65536个存储单元(可称为64K内存,1K= 1024),若MDR为32位,表示存储容量为64K×32位。
1.3.1.4 运算速度
1.3.1.4.1 吞吐量和响应时间
- 吞吐量:指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU 能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。
- 响应时间:**指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。**通常包括CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间)。
主频、主存容量和指令系统(间接影响CPI)并不是综合性能的体现。吞吐率指系统在单位时间内处理请求的数量,是评价计算机系统性能的综合参数。
1.3.1.4.2 主频和CPU时钟周期
- CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,执行指令的每个动作至少需要1个时钟周期。
- 主频(CPU时钟频率):**机器内部主时钟的频率,是衡量机器速度的重要参数。**对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。例如,常用CPU的主频有1.8GHz、2.4GHz、2.8GHz等。
CPU时钟周期=1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次。
提高CPU主频、扩大主存容量对性能的提升是有限度的。采用并行技术是实现高性能计算的重要途径,现今超级计算机均采用多处理器来增强并行处理能力。
1.3.1.4.3 CPI(Clock Per Instruction)
- CPI :即执行一条指令所需的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。
1.3.1.4.4 CPU执行时间
-
CPU执行时间:指运行一个程序所花费的时间。
CPU执行时间= CPU时钟周期数/主频=(指令条数×CPI)/主频
上式表明,CPU 的性能(CPU 执行时间)取决于三个要素:
- 主频(时钟频率)
- 每条指令执行所用的时钟周期数(CPI)
- 指令条数
**主频、CPI和指令条数是相互制约的。**例如,更改指令集可以减少程序所含指令的条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。
CPI是执行一条指令所需的时钟周期数,系统结构、指令集、计算机组织都会影响CPI,而时钟频率并不会影响CPI,但可加快指令的执行速度。例如,执行一条指令需要10个时钟周期,则一台主频为1GHz的CPU,执行这条指令要比一台主频为100MHz的CPU快。
1.3.1.4.5 MIPS(Million Instructions Per Second)
-
MIPS:即每秒执行多少百万条指令。
MIPS =指令条数/(执行时间× 1 0 6 10^{6} 106)=主频/( C P I × 1 0 6 CPI×10^{6} CPI×106)。
MIPS对不同机器进行性能比较是有缺陷的,因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
1.3.1.4.6 MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS和ZFLOPS
-
MFLOPS (Mega Floating-point Operations Per Second),即每秒执行多少百万次浮点运算。
MFLOPS=浮点操作次数/(执行时间× 1 0 6 10^{6} 106)。
-
GFLOPS (Giga Floating-point Operations Per Second),即每秒执行多少十亿次浮点运算。
GFLOPS = 浮点操作次数/(执行时间× 1 0 9 10^{9} 109)。
-
TFLOPS (Tera Floating-point Operations Per Second),即每秒执行多少万亿次浮点运算。
TFLOPS=浮点操作次数/(执行时间× 1 0 12 10^{12} 1012)。
-
PFLOPS =浮点操作次数(执行时间× 1 0 15 10^{15} 1015);
-
EFLOPS = 浮点操作次数(执行时间× 1 0 18 10^{18} 1018);
-
ZFLOPS=浮点操作次数/(执行时间× 1 0 21 10^{21} 1021)。
注:在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示,如 1Kb = 2 10 2^{10} 210b;在描述速率、频率等时,k、M、G、T通常用10的幂次表示,如 1kb/s = 1 0 3 10^{3} 103b/s。通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景。
1.3.1.5 基准程序
- 基准程序(Benchmarks):**是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。**对于不同的应用场合,应该选择不同的基准程序。
使用基准程序进行计算机性能评测也存在一些缺陷,因为基准程序的性能可能与某一小段的短代码密切相关,而硬件系统设计人员或编译器开发者可能会针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快,以至于得不到准确的性能评测结果。
1.3.2 几个专业术语
- 系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
- 兼容:指计算机软件或硬件的通用性,即使用或运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。
- 软件可移植性:指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性。
- 固件:**将程序固定在 ROM 中组成的部件称为固件。固件是一种具有软件特性的硬件,固件的性能指标介于硬件与软件之间,吸收了软/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物。**例如,目前操作系统已实现了部分固化(把软件永恒地存储于只读存储器中)。
1.4 本章小结
1.4.1 内容小结
-
计算机由哪几部分组成?以哪部分为中心?
计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成,现代计算机通常把运算器和控制器集成在一个芯片上,合称为中央处理器。
而在微处理器面世之前,运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量I/O设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使I/O操作尽可能地绕过CPU,直接在I/O设备和存储器之间完成,以提高系统的整体运行效率。 -
主频高的CPU 一定比主频低的CPU快吗?为什么?
衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU 的好坏。CPU的主频,即 CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU 的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、Cache 大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU 实际运算速度较低的现象。
-
不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植行。其中机器语言可以直接被硬件执行。
1.4.2 易混淆知识点
-
翻译程序、汇编程序、编译程序、解释程序的区别和联系是什么?
- 翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码)的软件。
翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新翻译,请注意同一种高级语言在不同体系结构下,编译成目标程序是不一样的,目标程序与体系结构相关,但仍不是计算机硬件能够直接执行的程序。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。 - 汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是一种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
- 编译程序与汇编程序的区别:若源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。
- 翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码)的软件。
-
机器字长、指令字长、存储字长的区别和联系是什么?
-
机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
-
指令字长:一个指令字中包含的二进制代码的位数。
-
存储字长:一个存储单元存储的二进制代码的长度。它们都必须是字节的整数倍。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的⒉倍,则需要﹖次访存来取出一条指令,因此取指周期为机器周期的⒉倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
-