1.1 x计算机发展历程
【复习提示】
本章是组成原理的概述,考查时易针对有关概念或性能指标出选择题,也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念,是学好后续章节的基础。部分知识点在初学时理解不深刻也无须担忧,相信随着后续章节的学习,一定会有更为深入的理解。本章中读者要重点掌握各个性能指标的计算,这部分内容在历年真题中出现的频率很高。
学习本章时,请读者思考以下问题:
1)计算机由哪几部分组成?以哪部分为中心?
2)主频高的CPU一定比主频低的CPU快吗?为什么?
3)翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
4)不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
请读者在学习本章的过程中寻找答案,本章末尾会给出参考答案。
1.1.1 计算机硬件的发展
计算机系统=硬件+软件
计算机硬件的发展:
第一代计算机:(使用电子管),
第二代计算机:(使用晶体管),
第三代计算机:(使用较小规模的集成),
第四代计算机:(使用较大规模的集成),
已经经历了4代,计算机的速度越来越快,并且体积变得越来越小。
发展趋势:1.更微型、多用途,手机;2.更巨型、超高速,超级计算机
晶体管之父:肖克利(1956年诺贝尔物理学奖得主)
1957年,"八叛徒"创立了仙童半导体
1959年,仙童半导体发明了“集成电路”
1968年,摩尔离开仙童,创立intel
1969年,仙童销售部负责人桑德斯离开仙童,创立AMD
摩尔定律,集成电路上的晶体管数量每18月就会翻一翻,所以每18月计算机的处理效率就会提高一倍。
1.1.2 计算机软件的发展
计算机软件技术的发展,促进计算机系统的发展。
计算机语言的发展经历了面向机器的机器语言和汇编语言、面向问题的高级语言。其中高级语言的发展真正促进了软件的发展,它经历了从科学计算和工程计算的 FORTRAN、结构化程序设计的 PASCAL到面向对象的C++和适应网络环境的Java。
同时,直接影响计算机系统性能提升的各种系统软件也有了长足的发展,特别是操作系统,如 Windows、UNIX、 Linux等。
1.1.3 计算机的分类与发展方向
可以分为:电子模拟计算机和电子数字计算机。
数字计算机又可以按照用途分为:
- 专用计算机和通用计算机
- 通用计算机又分为:巨型机、大型机、中型机、小型机、微型机和单片机6类。
按照指令和数据流可以分为:
- 单指令流和单数据流系统(SISD),即传统的冯·诺依曼体系结构。
- 单指令流和多数据流系统(SIMD),包括阵列处理器和向量处理器系统。
- 多指令流和单数据流系统(MISD),这种计算机实际上不存在。
- 多指令流和多数据流系统(MIMD),包括多处理器和计算机系统。
1.2 计算机系统层次结构
1.2.1计算机系统的组成
计算机系统由硬件系统和软件系统共同构建起来
1.2.2 计算机硬件的基本组成
1.早期的冯·诺依曼机
美籍匈牙利科学家冯·诺依曼最先提出“程序存储”的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。
什么是存储程序原理?按此原理,计算机应具有哪几大功能?
“程序存储”:指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令
计算机按照此原理应具有5大功能:数据传送功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能
冯诺曼体系结构特点:
- 计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
早期的冯·诺依曼机以运算器为中心,且是单处理机,最根本的特征是采用“存储程序”原理,基本工作方式是控制流驱动方式!
现代计算机:以存储器为中心
CPU=运算器+控制器
五大部分工作原理:
<1> 输入设备,是指将外部信息以计算机能读懂的方式输入进来,如键盘,鼠标等
<2> 输出设备,就是将计算机处理的信息以人所能接受的方式输出出来,比如显示屏,打印机。
<3> 存储器,存储器分为
- 主存储器(内存储器,CPU能直接访问)和 辅助存储器(外存储器,
- 协助主存储器记忆更多的信息,辅助存储器的信息需要导入到主存储器中,才可以被CPU访问)。
这个既可读也可写
主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式(相联存储器--既可以既可以按照地址寻址,又可以按照内容寻址,为了与传统存储器区别,又称为内容寻址的存储器!)
主存储器是由地址寄存器(MAR),数据寄存器(MDR),存储体,时序控制逻辑:
- 地址寄存器:存放访存地址,经过地址译码后找到所选的存储单元。
- 数据寄存器:是存储器与其他部件的中介,用于暂存要从存储器读或写的信息。
- 时序控制逻辑:用于产生存储器操作所需的各种时序信号。确保数据在正确的时间被读取。
-
存储体:存储体是实际存储数据的地方,由多个存储单元组成,每个存储单元都有一个唯一的地址。
在现代CPU,MAR和MDR是在CPU中的。
注意一个字(word)的大小这个看电脑配置。
- 1B = 8bit(固定不变)
- 1Word = 字长(16bit/32bit/64bit)
- 这个word字和B是不一样的。
<4> 运算器,是计算机的运算单元,用于算术运算和逻辑运算
运算器的核心单元是算术逻辑单元(ALU)
<5> 控制器,控制器是计算机的指挥中心,有其指挥各部件自动协调第进行工作。
现代计算机将运算器和控制器集成到一个芯片上,合成为中央处理器,简称CPU。有程序计数器(PC)、指令寄存器(IR)和控制单元(CU)。
计算机的工作过程
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)。CPU和主存储器共同构成主机,而除主机外的其他硬件装置(外存、I/O设备等)统称为外部设备,简称外设。
图1.4所示为冯・诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)。
1)取指令:PC→MAR→M→MDR→IR
2)分析指令:OP(IR)→CU.指令译码并送出控制信受。
3)执行指令:Ad(IR)→MAR→M→MDR→ACC,取数操作。
这个PC指向的是主存地址,MDR是指令,
这次写到MQ,上次数据ACC中2传入x
这次数据写到x
总结:
指令周期的不同阶段:
-
取指令阶段:包括将PC的内容送入MAR,从MDR读取指令,送入IR,以及PC加1。
-
分析指令阶段:将IR中的操作码送入CU,CU分析指令。
-
执行指令阶段:根据指令的不同,执行相应的操作。
IR存放当下欲执行的指令;
PC存放下一条指令的地址;
MAR存放欲访问的存储单元地址;
MDR存放从存储单元取来的数据!
地址译码器是主存的构成部分,不属于CPU;
地址寄存器虽然一般属于主存,但是现代计算机中绝大多数CPU内集成了地址寄存器!
关于CPU存取速度的比较:寄存器(CPU内部)> Cache(高速的SRAM) > 内存 (SDRAM)
1.2.3 计算机软件的分类
1.系统软件和应用软件
计算机软件,一般分为系统软件和应用软件
- 系统软件包括 操作系统,数据库管理系统,语言处理系统(比如编译器),分布式软件系统,网络软件系统,标准库系统,服务性系统(比如连接程序)。
- 应用软件包括 各种科学计算类程序,工程设计类程序,数据统计与处理程序。
注意:数据库管理系统和数据库系统是有区别的。数据库管理系统是系统软件。而数据库系统一般是由数据库,数据库管理系统,数据库管理员和应用系统构成。所以只能说它里面有系统软件,但并不能说它为系统软件。数据库管理系统 被包含于 数据库系统
2.三个级别的语言
-
1)机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
-
2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。不可移植
-
3)高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
由高级语言转换到汇编语言的过程叫做编译,由汇编语言转换到机器语言的过程叫做汇编,边翻译边执行的叫做解析。 解释程序的特点是翻译一句执行一句
机器语言是唯一可以控制cpu的语言,因为它的符号不利于人识别和书写,为了方便理解和记忆,将机器语言换一些通俗易懂的符号,这就变成了汇编语言。一般来说在在编译器中高级语言先转换为汇编在转换为机器语言,也有直接转换为机器语言的情况。
- 机器语言是计算机唯一可以直接执行的语言,汇编语言用助记符编写,以便记忆。
- 正则语言是形式语言理论中的一类语言,与编程语言层级不同。是编译原理中符合正则文法的语言。
1.2.4计算机系统的层次结构
在计算机体系结构中,“透明”一词通常指某个组件或机制对用户(程序员)不可见或无需关注。具体到寄存器,“透明”意味着用户无需直接操作或管理该寄存器,其功能由硬件自动处理。
1.2.5计算机系统的工作原理
-
功能分类(存储设备)
外存(如硬盘、SSD、U盘等)的核心功能是长期存储数据,属于典型的非易失性存储介质。它独立于内存(RAM),在断电后仍能保留数据,因此从功能上明确属于存储设备。 -
接口分类(I/O设备)
外存需要通过I/O接口(如SATA、USB、NVMe等)与计算机系统交互,数据读写依赖I/O总线操作。从硬件连接和通信方式来看,外存属于I/O设备的范畴。
习题
除立即寻址外,数据均存放在存储器内,而非指令
1.3 计算机性能指标
KMG-TPEZ 10^3
ms-μs-ns-ps 毫微纳皮
1s【秒】 = 1000ms【毫秒】
1ms【毫秒】 = 1000μs【微秒】
1μs【微秒】 = 1000ns【纳秒】
1ns 【纳秒】= 1000ps【皮秒】
机器字长
计算机的位数(机器字长),表示计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数。计算机字长通常选定为字节(8位)的整数倍,通常是2,4,8倍。不同的计算机,字节可能不同。
机器字长、指令字长、存储字长的区别和联系是什么?
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于数据总线宽度或通用寄存器的数据容量,它决定了计算机的运算精度。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数, 它们都必须是字节的整数倍。
- 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
指令字长:一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
存储器的性能指标
主存容量 :MAR的位数反映存储单元的个数,如MAR为16位,表示存储单元为2^16 = 64K;若MDR为32位,则存储容量为2^16x32.
这里注意:MDR是8位(即1字节,无论几位都是一个字,和电脑属性有关)
- 1B = 8bit(固定不变)
- 1Word = 字长(16bit/32bit/64bit)
- 这个word字和B是不一样的。
系统整体的性能指标
- 数据通路带宽:数据总线一次所能传送信息的位数。
- 吞吐量,指系统在单位时间内处理请求的数量 ;
- 响应时间,指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结构的等待时间。
- 基准程序,是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能能进行比较。从用户观点看,它是评价计算机系统性能的综合参数!
CPU
假设你有一个 玩具工厂,生产小汽车:
- CPU时钟主频 = 流水线速度(每秒能完成多少个操作步骤)
- 例如:时钟频率主频 3GHz = 每秒 30 亿个操作步骤。
- CPI = 生产一辆小汽车需要的平均步骤数
- 例如:CPI=2 =每条指令平均消耗的时钟周期数
IPS = 主频 / 平均CPI,每秒生产的小汽车数 = 流水线速度 / 每辆步骤数
- 每个时钟周期能完成 1/CPI 条指令(每步完成 1/CPI 条)
- 每秒周期数 = 主频 → IPS = 主频 × (1/CPI) = 主频 / CPI
- 指令条数 = 要生产的小汽车总数
- 例如:指令条数=10 亿 = 需要生产 10 亿辆小汽车。
CPU 执行时间 = CPU时钟周期数/主频=指令条数 × CPI / 主频, = (小汽车总数 × 每辆步骤数) / 流水线速度
CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,它是CPU工作最小的时间单位,每个动作至少需要1个时钟周期。
主频(CPU时钟频率)。机器内部主时钟的频率,是衡量机器速度的重要参数。一个执行步骤时间越短
CPU周期又称为机器周期,由多个时钟周期组成!:指令周期>CPU周期>时钟周期
概念 | 定义 | 关系 |
---|---|---|
CPU时钟周期 | CPU 最小时间单位(主频的倒数),如 3GHz CPU 的时钟周期 ≈ 0.333ns | 基础单位 |
CPU周期 | 又称机器周期,完成一个基本操作(如取指、执行)所需时间,包含多个时钟周期 | 1 CPU周期 = N时钟周期 |
指令周期 | 执行一条完整指令所需的时间,包含多个 CPU 周期 | 1 指令周期 ≥1 CPU周期 |
CPI(Clock cycle Per Instruction),即执行一条指令所需的时钟周期数。
CPU执行时间,指运行一个程序所花费的时间。
- CPU执行时间 = CPU时钟周期数/主频 = (指令条数xCPI)/主频
- CPU的性能取决于三个要素:主频、CPI 、指令条数
IPS(Instructions Per Second) =主频/平均CPI,每秒执行多少指令,CPU 每秒吞吐量
MIPS(Million Instructions Per Second)=即每秒执行多少百万条指令。
MFLOPS(Mega Floating-point Operations Per Second)=浮点操作次数/(执行时间x106),即每秒执行多少百万次浮点运算。
GFLOPS(Giga Floating-point Operations Per Second)=浮点操作次数/(执行时间x109),即每秒执行多少十亿次浮点运算。
TFLOPS(Tera Floating-point Operations Per Second)=浮点操作次数/(执行时间x1012),即每秒执行多少万亿次浮点运算。在存储方面:K2^10,M2^20
在速度方面:K10^3,M10^6
- 平均 CPI 相同情况下的性能判断:即便 A、B 两个 CPU 平均 CPI 相同,也不能肯定 A 就更快。还需考虑指令系统,比如 A 不支持乘法指令,需多次加法实现乘法,而 B 支持乘法指令,这会使 B 在执行含乘法运算的任务时更高效。
- 基准程序与机器性能关系:探讨基准程序执行快是否意味着机器性能好,答案是否定的。因为基准程序中语句使用频度有差异,其运行结果不能全面、准确反映机器性能。基准程序仅反映特定任务场景的性能,无法代表通用性能。
术语
-
系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。这意味着不同型号的计算机在体系结构和指令集上是一致的,但可能在性能、功能或硬件配置上有所不同。
-
兼容:指的是软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件或软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。兼容性允许软件或硬件在不同的系统或设备上运行,而不需要进行修改或重新开发。
-
固件:将程序固化在ROM(只读存储器)中组成的部件。固件是一种具有软件特性的硬件,它吸收了软件/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物。例如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)。
习题
寄存器是触发器构成的
- 选项A错误。CPU主频是时钟频率(单位Hz),而非执行指令的频率;CPI是每条指令所需的时钟周期数,与“频率”无关。
- 选项B错误。CPI的定义正确,但MIPS表示每秒执行的百万指令数,而非“指令平均使用的周期数”。
- 选项C错误。MIPS描述指令执行速度(百万次/秒),但MFLOPS衡量浮点运算速度,而非“浮点数指令”本身。
- 选项D正确。CPU主频即时钟频率,CPI为每条指令的平均时钟周期数,两者定义均准确。
-
选项A(具有32位寄存器):虽然32位CPU通常包含32位寄存器,但“32位微机”的核心定义并非基于寄存器位数,而是基于数据总线宽度或通用寄存器的数据容量。寄存器位数是结果而非定义本身,因此此选项表述不够准确。
-
选项B(能同时处理32位的二进制数):完全正确。32位CPU的核心能力是一次性处理32位(4字节)的二进制数据,这体现在其数据总线宽度、运算单元设计以及通用寄存器的容量上。例如,32位CPU的加法器可以直接处理32位整数运算。
-
选项C(具有32个寄存器):错误。CPU的位数与寄存器数量无关。现代32位CPU的寄存器数量通常远多于32个(例如x86架构有通用寄存器、段寄存器、控制寄存器等),且寄存器数量由架构设计决定,而非位数定义。
-
选项D(能处理32个字符):错误。32位CPU一次能处理的是32位数据,而非字符数量。字符处理能力取决于编码方式(如ASCII、UTF-8),例如32位CPU一次可处理4个ASCII字符(每字符1字节),但此表述与“32位”定义无关。
ips是每秒执行的指令,题目说的是该类程序,应该看cpu执行时间。
在计算机体系结构中,“透明”一词通常指某个组件或机制对用户(程序员)不可见或无需关注。具体到寄存器,“透明”意味着用户无需直接操作或管理该寄存器,其功能由硬件自动处理。
- 程序计数器(A):
- 部分透明。程序计数器(PC/IP)存储下一条指令的地址,用户无法直接读写其值,但可通过跳转指令(如 JMP、CALL)间接控制。因此,用户需关注其逻辑影响,并非完全透明。
- 指令寄存器(B):指令寄存器(IR)是唯一完全由硬件自动管理、对用户透明的寄存器。
- 完全透明。指令寄存器(IR)用于暂存当前正在执行的指令,仅在CPU内部使用。用户无法通过任何指令访问或修改IR的内容,其操作完全由CPU自动完成,对用户不可见。
- 状态寄存器(C):
- 不透明。状态寄存器(如EFLAGS)存储运算结果的状态标志(如进位、零标志)。用户需通过条件跳转指令(如 JE、JNZ)依赖这些标志控制程序流程,需显式关注其状态。
- 通用寄存器(D):
- 完全不透明。通用寄存器(如EAX、EBX)是用户直接操作的寄存器,用于存储数据和地址,需通过汇编指令显式管理。
20
浮点寄存器:浮点寄存器的宽度可能与机器字长不同。例如,在一些系统中,浮点寄存器可能是32位(单精度),而机器字长是64位。
1.5 小结、常见问题
1)计算机由哪几部分组成?以哪部分为中心?
- 组成部分:
- 运算器、控制器、存储器、输入设备、输出设备。
- 现代计算机中,运算器和控制器集成在中央处理器(CPU)中。
- 中心演变:
- 早期冯·诺依曼机:以运算器为中心,其他部件通过运算器传递信息。
- 现代计算机:以存储器为中心,IO操作直接在存储器和设备间完成,减少CPU干预,提升效率。
而在微处理器面世之前(早期的冯·诺依曼机),运算器和控制器分离,而且存储器的容量很小,因此设计成以运算器为中心的结构,其他部件都通过运算器完成信息的传递。
随着微电子技术的进步,同时计算机需要处理、加工的信息量也与日俱增,大量IO设备的速度和CPU的速度差距悬殊,因此以运算器为中心的结构不能满足计算机发展的要求。现代计算机已经发展为以存储器为中心,使IO操作尽可能地绕过CPU,直接在IO设备和存储器之间完成,以提高系统的整体运行效率。
2) 主频高的CPU一定比主频低的CPU快吗?为什么?不一定。
- 主频定义:CPU内核的时钟频率,表示数字脉冲信号振荡速度。
- 实际速度影响因素:
- 架构设计(如流水线效率)、缓存大小(Cache)、指令集优化、核心数量等。
- 示例:主频2.5GHz的CPU若缓存小、架构落后,可能比主频2.0GHz但缓存大、架构先进的CPU更慢。
衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。CPU的主频,即CPU内核工作的时钟频率。CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、 Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象
3)翻译程序、汇编程序、编译程序、解释程序有什么差别?各2自的特性是什么?
程序类型 | 功能 | 输入语言 | 输出语言 | 执行方式 | 特性 |
---|---|---|---|---|---|
翻译程序 | 广义翻译工具 | 高级语言 | 机器语言 | 依赖具体类型 | 包含编译和解释两种方式 |
编译程序 | 整体翻译 | 高级语言(如C++) | 目标代码(机器语言/汇编) | 一次性生成目标程序,后续直接执行 | 效率高,跨平台需重新编译 |
解释程序 | 逐行翻译执行 | 高级语言(如Python) | 无独立目标程序 | 边翻译边执行 | 灵活性高,便于调试,速度较慢 |
汇编程序 | 翻译低级语言 | 汇编语言 | 机器语言 | 一对一转换 | 与硬件直接相关,可移植性差 |
翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码)的软件。
翻译程序有两种:
- 编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新翻译,请注意同一种高级语言在不同体系结构下,编译成目标程序是不一样的,目标程序与体系结构相关,但仍不是计算机硬件能够直接执行的程序。
- 解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
编译程序与汇编程序的区別:
- 若源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。
- 若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。
4)不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
- 区别:
- 机器语言:二进制指令,硬件直接执行。
- 汇编语言:机器指令的符号化表示,与硬件一一对应。
- 高级语言(如Java):抽象化语法,依赖编译/解释器转换为机器语言,可移植性强。
- 直接执行的程序:
- 只有机器语言编写的程序能被硬件直接执行。
机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性。
同一个功能既可以由软件实现又可以由硬件实现吗?
- 答案:是的。
- 逻辑等效性:软件和硬件在逻辑功能上是等效的,但实现方式不同。
- 因此,在计算机系统中,许多功能既可以由硬件直接实现,又可以在硬件的配合下由软件实现。
- 区别:
- 硬件实现:速度快、成本高(如专用乘法器)。
- 软件实现:速度慢、成本低(如乘法子程序)。
- 示例:乘法运算可通过硬件乘法器(加法器+移位器)或软件(加法指令+移位指令)实现。
- 实际应用:芯片流片后,优先用软件修复硬件 bug 以降低成本。
什么是透明性?透明是指什么都能看见吗?
- 答案:计算机中的“透明性”与日常生活中的“透明”含义相反。就是程序员看不到的操作,不用关心
- 定义:若某事物对用户不可见(用户无需关注其存在),则称该事物对该用户是透明的。
- 示例:
- 高级语言程序员:无需关心浮点数格式、乘法指令的底层实现(透明)。
- 汇编语言程序员:需直接操作指令格式和硬件结构(不透明)。
- 透明性实例:CPU 中的 IR(指令寄存器)、MAR(内存地址寄存器)、MDR(内存数据寄存器)对程序员透明。
机器字长、指令字长、存储字长的区别和联系是什么?
概念 | 定义 | 联系 |
---|---|---|
机器字长 | 计算机能直接处理的二进制数据位数,等于寄存器大小,决定运算精度。 | |
指令字长 | 一条指令的二进制代码位数,通常为存储字长的整数倍。 | |
存储字长 | 一个存储单元存储的二进制代码长度,等于 MDR 的位数。 | |
数据字长 | 数据总线一次能传送的位数,可独立于 MDR 位数。 |
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
计算机体系结构和计算机组成的区别和联系是什么?
- 区别:
- 体系结构(Architecture):机器语言或汇编语言程序员可见的属性,如指令集、数据类型、寻址方式(“做什么”)。
- 计算机组成(Organization):对程序员透明的硬件实现细节,如指令执行流程(“怎么做”)。
- 联系:
- 相同体系结构的机器可通过不同组成实现(如 IBM System/370 系列)。
- 示例:是否支持乘法指令是体系结构问题,如何实现乘法指令是组成问题。
计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含对许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数如何运算等都属于组成的问题。
因此,当两台机器指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,完全可以不同,即可以认为它们的组成方式是不同的。例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。(简言之,看有没有这个属性,就是结构问题;看怎么实现,就是组成问题)
基准程序执行得越快说明机器的性能越好吗?
- 答案:不一定。
- 基准程序局限性:
- 测试结果受语句频度、编译器优化、硬件特性(如缓存)等因素影响。
- 特定基准程序可能无法全面反映实际应用场景的性能。
- 正确使用:需结合多种测试场景和实际工作负载综合评估性能。
- 基准程序局限性: