250 likes | 418 Views
先进计算机系统结构专题 ( 第二次讨论课: 107 计算机组成原理 ) 李环宇 ustcus@gmail.com 2013 秋. 计算机科学与技术学院. 科学与社会. 历史. 1956 年,夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时编写了中国第一本电子计算机原理讲义。 1957 年,哈尔滨工业大学研制成功中国第一台模拟式电子计算机。 1958 年,中国第一台计算机 --103 型通用数字电子计算机研制成功,运行速度每秒 1500 次。 1959 年,中国研制成功 104 型电子计算机,运算速度每秒 1 万次。
E N D
先进计算机系统结构专题(第二次讨论课:107计算机组成原理 )李环宇ustcus@gmail.com2013秋 计算机科学与技术学院 科学与社会 An Hong CS USTC
历史 • 1956年,夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时编写了中国第一本电子计算机原理讲义。 • 1957年,哈尔滨工业大学研制成功中国第一台模拟式电子计算机。 • 1958年,中国第一台计算机--103型通用数字电子计算机研制成功,运行速度每秒1500次。 • 1959年,中国研制成功104型电子计算机,运算速度每秒1万次。 • 1960年,中国第一台大型通用电子计算机--107型通用电子数字计算机研制成功。 An Hong CS USTC
冯诺依曼体系结构 An Hong CS USTC
107计算机的组成 • 体系结构:冯诺依曼体系结构 • 组成:运算器、控制器、存储器、输入及输出(打印)设备、电源装置 • 控制器具体构成: • 指令控制器 • 指令地址计数器 • 指令寄存器 • 中央操作控制器 • 局部控制器 • 中央控制器 • 控制台 An Hong CS USTC
107计算机的指令集 • 指令长度为16bit,操作码为4位,故一共支持16种不同的操作分别是: • 数据传输 • 接收 • 发送 • 运算 • 按位求补/按位加法/逻辑加法/逻辑乘法 • 加法/溢出不停机的加法/减法/乘法/除法 • 控制 • 无条件转移/条件转移/非零转移 • 打印及停机 • 所有指令均遵循“操作码”+“地址”的形式 An Hong CS USTC
107计算机的基本构成单元 • 运算器及控制器 • 所采用的主要元件为电子管及晶体二极管。 • 存储器 • 是容量为1024的磁心存储器。 • 输入设备 • 为五单位发报机。 • 输出设备 • 用电传打字机。 • 电源 • 用硒整流片及锗二极管整流,用电子管稳压。 An Hong CS USTC
从与或非开始说起(minecraft演示) • 与门,或门,非门 • 选择器 • 锁存器 • 触发器(简略) An Hong CS USTC
107计算机指令执行流程 • 第一步:指令地址计数器发送地址到存储器 问题:107计算机的存储器是一个1024×32bit的磁芯存储器,已知指令是16bit长,那么指令地址计数器需要几位? 在这里我们以加法操作为例(指令码为0010),指令已保存在存储器中 An Hong CS USTC
107计算机存储器 注:由于存储器设计每次只能读取8bit,所以取指,需访问两次取出一条指令,访问四次取出一个数据。 An Hong CS USTC
107计算机指令执行流程 • 第二步:从存储器读指令到指令寄存器(读两次) An Hong CS USTC
107计算机指令执行流程 • 第三步:指令寄存器发送操作码到译码器,进行译码 An Hong CS USTC
107计算机指令执行流程 • 第四步:指令寄存器发送地址给存储器,用于读出操作数。 An Hong CS USTC
107计算机指令执行流程 • 第五步:存储器发送数据给运算器,进行计算。 An Hong CS USTC
加法的计算过程 • 107计算机用的加法器是一位加法器,被加数存储在寄存器A中,加数由存储器读出。通过局部控制器进行控制移位,一位一位的加出结果。 • 完成两个32位数相加,需要32拍 An Hong CS USTC
一位加法器的原理 • 输入:A,B,C0 • 输出:S,C1 • 输入的可能性种类是8种,可以枚举列出真值表 • 最后可以根据这个真值表列出逻辑表达式: An Hong CS USTC
107计算机的输入方式 • 输入设备:38型五单位自动发报机 • 孔格式: • 有孔代表1,没孔代表0。 • 首位有孔代表是要存入存储器的内容(指令或数据)。 • 首位无孔表示是用于控制机器运行的指令 • 如图中最后一行00100代表停止纸带传送。 An Hong CS USTC
一段简单的C程序代码 val=0; for(i=0; i<10; i++) val=val+1; 对应的X86汇编码 MOV a,0 MOV b,0 LOOP: TEST b,10 JGE END ADD a,1 ADD b,1 JMP LOOP END: C程序与X86汇编程序 An Hong CS USTC
107计算机的汇编码定义(一) • 0000 接收 REV rev • 0001 与(逻辑乘) AND and • 0010 加法 ADD add • 0011 减法 SUB sub • 0100 乘法 MUL mul • 0101 除法 DIV div • 0110 可溢出加法 ADDD addd • 0111 或(逻辑加) OR or An Hong CS USTC
107计算机的汇编码定义(二) • 1000 取反 NOT not • 1001 发送 SEND send • 1010 无条件转移 JMP jmp • 1011 条件转移 JLZ jlz • 1100 非零转移 JNZ jnz • 1101 打印 OUT out • 1110 停机 HALT halt • 1111 异或 XOR xor An Hong CS USTC
107计算机的数据类型 • 107计算机指令集中有两种数 • 整数: 用于标识地址位,数值范围是从0~2047,用11位表示 • 浮点数:用于运算,数值范围是-1~1,包括-1但不包括1,用32位表示 • 浮点数 • 首位标志是符号位,采用补码表示法,如: 0100 表示 0.5; 1001 表示 - 0.875; • 问题:107计算机表示数的精度是多少? An Hong CS USTC
107计算机汇编程序的指令格式 • 由于107计算机指令格式均是指令操作码加内存地址的模式,故采取如下表示: • 普通运算指令 ADD #1024 注:地址范围为0~2047,数据地址原则上要求为偶数 • 跳转指令 JMP #1024 • 打印及停机指令 OUT HALT An Hong CS USTC
地址: *1011 //二进制 $1024 //八进制 #1204 //十进制 %1024 //十六进制 数值 *0.1101 $0.22 #0.1 %0.fa #+0.3 #-0.3 数值的范围只能写-1~1的小数,否则报错。 107计算机汇编程序数值的写法 数值的表示:支持二进制,八进制,十进制,十六进制表示,分别添加前缀*,$,#,%即可。 An Hong CS USTC
107计算机汇编程序的书写规范 程序分为两块,分别为程序段和数据段 .code //标志程序段的开始 XOR #1222 //代码部分 .data //标志数据段的开始 #0.1203 支持类似C语言的多行注释和单行注释 //单行注释 /* 多行注释 */ An Hong CS USTC
.code //1000 rev #1014 //1000 sub #1016 jlz #1013 rev #1014 out mul #1018 //1005 out sub #1020 out div #1022 out //1010 send #1014 jmp #1000 halt .data #0.5 //1014 #0.0009765625 //1016 #0.25 //1018 #0.0009765625 //1020 #0.5 //1022 程序实例演示&模拟器使用方法 An Hong CS USTC
感兴趣的同学可以尝试如下题目 • 将程序源码或截图发至han@ustc.edu.cn,并说明使用方法,邮件主题:107计算机 • 任务列表: • 计算π值 • 计算e值 • 计算n次幂 • 计算平方根 • 计算n次方根 • 计算sin,cos • 炮弹落点计算 • 鼓励自定义题目,让107数字计标机再次焕发青春! An Hong CS USTC