[数电计组]第一节:计算机系统概述

第一章 计算机系统概述

prev:学习笔记内容基于《计算机组成与设计》一书,南京大学袁春风著。

世界上第一台通用电子计算机ENIAC:
1946年、电子真空管、美国宾夕法尼亚大学
服务于炮弹轨道计算、手动插拔编程

存储程序的基本思想
任何计算机完成的工作都要先被编写成程序,然后程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应能在不许操作人员干预下,自动完成逐条取出指令和执行指令的任务。
IAS是现代计算机的原型机

冯诺依曼计算机的基本思想:
(1)采用存储结构的工作方式
(2)计算机由运算器、控制器、存储器、输入设备和输出设备五个基本部件组成
(3)存储器不仅能存储数据,也能存储指令。形式上,数据和指令没有区别。但计算机可以区分它们。控制器可以自动执行指令,运算器可以进行算术运算和逻辑运算。操作人员可以通过输入输出设备使用计算机。
(4)计算机内部以二进制形式存储指令和数据,每条指令由操作码和地址码两部分构成,操作码指出操作类型,地址码指出操作数的地址;程序由一连串指令构成。

冯诺依曼结构计算机的基本硬件组成pic at P3

  1. 中央处理器(Central processing unit,CPU)简称处理器:控制部件、运算部件和各类寄存器互连组成的电路。
  2. 主存/内存(Main Memory , MM):把用来存放指令和数据的存储部件称为主存储器或内存。主存内的每个单元都需要编号,称为主存地址。可以用来提供地址的定位,以及服务于指令码中的地址码部分。
  3. 总线 :CPU为了从主存取指令和存取数据,需要通过传输介质与主存相连。通常把连接不同部件进行信息传输的介质称为总线。其中包含用于传输地址信息、数据信息和控制信息的地址总线、数据总线和控制总线。CPU在访问主存时,需要先将主存地址、读/写命令分别送到地址总线、控制总线,再通过数据总线发送、接受数据。CPU发送到地址线的主存地址会线存储到主存地址寄存器(MAR memory address register)处,而CPU从主存得到的数据或通过数据线发送到主存的数据需要线存储到主存数据寄存器(MDR,memory data register)处。MAR与地址线的位数相同,MDR与数据线的位数相同。
  4. 算数逻辑部件(Arithmetic and logic unit, ALU):计算机中最基本的能够实现算数和逻辑运算的运算器。ALU运算的结果会产生标志信息,例如,结果是否为0(零标志ZF)、是否为负数(符号标志SF)这些标志信息需要记录在专门的标志寄存器中。
  5. 寄存器(Register):寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。寄存器在数值传递、运输上效率更高速度更快,因此会称为CPU和主存之间的“中转站”
  6. 通用寄存器组(General purpose register set GPRS):为了向ALU提供操作数,以及临时存放从主存取来的数据或运算的结果,还需要若干通用寄存器,组成通用寄存器组GPRS。而这些通用寄存器组同样需要进行地址的编号。
  7. 控制部件(Control unit , CU) 计算机能够自动逐条取出指令并执行,因此需要一个能够自动读取指令并对指令进行译码的部件,这个部件就是控制部件。
  8. 指令寄存器(Instruction register, IR):为了配合控制部件工作,从主存中取出的指令会先存放在指令寄存器IR中。
  9. 程序计数器(Program counter, PC):存放待执行的下一条指令所在的主存地址,为了自动按序读取主存中的指令,在执行当前指令的同时会自动计算出下一条指令的主存地址,并送到PC中保存。
  10. 输入输出设备(I/O): 用来和用户交互的设备。

程序和指令的执行过程:P5
指令和数据在计算机中均由二进制数的形式存储。
指令通常被划分为若干个字段,有操作码、地址码等字段。操作码字段指出指令的操作类型,如取数、存数、加、减、传送、跳转等;地址码字段指出指令所处理的操作数的地址,如寄存器编号、主存单元的地址编号等等。
教材的主存地址由四位二进制数表征,寄存器地址由两位二进制数表征。R型指令根据字面意思,是对寄存器进行的操作,rt、rs分别为待操作两个寄存器的具体地址,op为所进行的操作。不同的操作码对应不同的寄存器操作。M型指令根据字面意思,是对主存内容的操作。默认参与操作的寄存器是0号寄存器,而addr存储参与操作的主存地址。
这样分析,实现z=x+y的代码表格图1.3内,可有如下解读:
(1)最左端是主存地址,也就是指令或数据在主存中的存储位置。
(2)主存单元内容,也就是主存单元存储的数据或指令的具体内容,以机器码二进制的形式存在。
(3)PC默认为0000,也就是从主存地址为0的单元取出指令,反复运行之后,PC会自动++以实现指令的逐条取出和执行。最终,会完成对5、6、7主存地址数据的操作。
(4)这个过程中,运算本身通过R指令发生在了寄存器中,而主存和寄存器之间的M操作只起到取数和存数的功能。
再具体地分析一个指令I1地执行过程:
首先,I1存储在主存的0单元。先通过IR<-M[0000],取出指令I1到指令寄存器中,然后高位操作码op会送入到控制系统CU中进行译码,同时PC会+1变为0001,保证下一个指令的按序取出和执行。然后由于为取数指令,控制器CU会发出一个控制信号到总线中的控制线;而I1的低位地址码addr会传送到MAR,接着再传送到总线中的地址线。这样,一段时间后,主存中addr单元的数据就会被取出并通过数据线保存到MDR中,接着MDR中取出的数据又会保存到0号寄存器中,因此I1的最终运行结果为R[0] = 33

程序的开发和运行
低级编程语言:机器语言(基本不可读,01二进制代码形式)、汇编语言(稍微可读,对应功能与机器语言相同,与机器结构相关),两者统称为机器级语言。
高级编程语言:可读性强,描述能力强。
翻译程序:
(1)汇编程序(assembler):也称汇编器,用来将汇编语言程序翻译成机器语言程序。·
(2)解释程序(interpreter):也称解释器,用于将源程序的语句按其执行顺序逐行翻译成机器语言并立即执行。
(3)编译程序(compiler):也称编译器,用于将高级语言元程序翻译成汇编语言或机器语言目标程序。

一个c语言程序的具体编译过程:
预处理阶段:嵌入#include的文件;
编译阶段:将高级语言转化为汇编语言;
汇编阶段:将汇编语言转化为二进制机器语言,不可读,生成可重定位二进制文件;
连接阶段:将多个可重定位二进制文件合并成为一个可执行目标文件。

缓冲区(Buffer):就是在内存中预留指定大小的存储空间用来对I/O的数据做临时存储,这部分预留的内存空间叫缓冲区。可以提高I/O的效率。

具体的可执行文件如何运行?详细内容参见P11,需要人机接口环境(如shell程序)、操作系统的内核服务例程、

指令集体系结构(Instruction set architecture, ISA):ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,所处理的操作数存放的地址空间以及操作数类型。ISA规定的内容包括数据类型及格式,指令格式,寻址方式和可访问地址空间的大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编制方式,中断结构,机器工作状态的定义和切换,输入输出结构和数据传送方式,存储保护方式等。因此,可以看出,指令集体系结构是指软件能够感知到的部分,也称软件可见部分。

计算机性能的定义与测试:

吞吐率(throughput):表示在单位时间内所完成的工作量;
响应时间(response time):指作业提交到作业完成所用的时间;(类似的概念是执行时间、等待时间)
时钟周期 :计算机执行一条指令的过程被分为若干个步骤来完成,每一步有相应的控制信号进行控制,这些控制信号何时发出、作用时间多长,都需要有相应的定时信号进行同步。因此,计算机必须能够产生同步的时钟定时信号,也就是CPU的主脉冲信号,其宽度称为始终周期(clock cycle/clock tick/clock)
时钟频率: CPU的主频就是主脉冲信号的时钟频率(clock rate),它是CPU时钟周期的倒数。
CPI(cycles per instruction) 表示执行一条指令所需的时钟周期数。由于不同指令的功能不同,所需的时钟周期数也不同,因此,对于一条特定指令而言,其CPI指执行该条指令所需的时钟周期数。此时CPI为定值。对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令所需的平均时钟周期数,此时的CPI是一个均值。
综上所述,有如下数值关系:
程序的总时钟周期数,可以在已知其中每一条指令的条数和其CPI后求出:
总时钟周期 = Σ(CPIi × Ni) 其中第i中指令的CPI为CPIi,而第i条指令的执行次数为Ni
程序的平均CPI = Σ(CPIi × Fi) = 程序的总时钟周期数 ÷ 程序的总指令条数 其中第i条指令的CPI为CPIi,第i条指令在程序中所占的比例为Fi
因此,若已知平均CPI和时钟周期以及程序的指令条数,则:
用户CPU时间 = CPI × 时钟周期 × 指令条数
指令速度的计量单位为MIPS (million instructions per second)平均每秒钟执行多少百万条指令

课后练习待增补:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值