-
更多相关内容
-
计算机原理与结构 实验3《单周期微处理器设计》
2019-08-04 18:32:19掌握:利用Quartus II 设计CPU的基本原理核方法; 掌握:指令系统的设计与实现方法。 二、实验内容 采用Verilog设计一个单周期的MIPS微处理器,其测试程序为: # test1.asm # 23 October 2005 David Harris ...实验3《单周期微处理器设计》
一、实验目的
- 掌握:如何采用Verilog设计时序逻辑电路;
- 掌握:利用Quartus II 设计CPU的基本原理核方法;
- 掌握:指令系统的设计与实现方法。
二、实验内容
采用Verilog设计一个单周期的MIPS微处理器,其测试程序为:
# test1.asm # 23 October 2005 David Harris David_Harris@hmc.edu # # Test MIPS instructions. #Assembly Code # Machine Code main: addi $2, $0, 5 # 20020005 addi $7, $0, 3 # 20070003 addi $3, $0, 0xc # 2003000c or $4, $7, $2 # 00e22025 and $5, $3, $4 # 00642824 add $5, $5, $4 # 00a42820 beq $5, $7, end # 10a70008 slt $6, $3, $4 # 0064302a beq $6, $0, around # 10c00001 addi $5, $0, 10 # 2005000a around: slt $6, $7, $2 # 00e2302a add $7, $6, $5 # 00c53820 sub $7, $7, $2 # 00e23822 j end # 0800000f lw $7, 0($0) # 8c070000 end: sw $7, 71($2) # ac470047
三、实验方法
利用ModelSim SE 10.1开发工具设计并实现一个单周期的MIPS微处理器。
参考已有代码及教程完成在本机上测试MIPS微处理器。四、实验步骤
- 阅读课程参考PPT,了解单周期MIPS处理器内部逻辑设计;
- 利用ModelSim进行实验操作;
2.1 打开ModelSim工具, 选择【File】→【New】→【Project】,新建一个工程,命名simpleMIPS,用于实现程序功能。
2.2 创建新工程后添加已经写好的Verilog代码,同时选择将文件复制到当前目录。
2.3 将memfile.dat文件复制到当前工作目录下。
2.4 编译当前所有文件。
2.5 选择【Simulate】→【Start Simulation】,开始进行仿真测试。
2.6 选择测试文件testbench,不用选择优化,之后点击ok即可。
2.7 添加相关信号,组成波形图。
2.8 将时间周期改为1ns。
2.9 点击run,进行结果测试,数据与预期结果符合,无差错。
- 总结实验过程,完成实验报告。
五、实验结果
实验运行结果正确,符合预期效果,能够正常显示MIPS运行效果。
实验输出数据及结果分析可参考第四点实验步骤内容。六、实验结论
本次实验通过使用ModelSim开发工具和Verilog设计一个单周期的MIPS微处理器,之后对该程序进行测试验证,结果符合预期。
七、实验思考
- 单周期微处理器的特点是什么?如何在单周期处理器中实现流水线?
单周期微处理器的特点:
在一个周期中执行一条完整的指令,该结构易于解释且控制单元简单,时钟周期由最慢的指令决定。
在单周期处理器中实现流水线:
通过将单周期处理器分解成5个流水线阶段来构成流水线处理器。
每个阶段只需完成一个慢操作,五个阶段分别为取指令、译码、执行、存储器和写回。在“取指令”阶段,处理器从指令存储器中读取指令。在“译码”阶段,处理器从寄存器文件中读取源操作数并对指令译码以便产生控制信号。在“执行”阶段,处理器使用ALU执行计算。在“存储器”阶段,处理器读或写数据存储器。最后,在“写回”阶段,如果需要,处理器将结果写回到寄存器文件。
这样,可以在每阶段流水线中同时执行5条指令。由于每阶段仅有整个逻辑的1/5,所以时钟频率几乎可以提高5倍。因此,虽然每条指令的延迟并未改变,但理想情况下吞吐量可以提高5倍。八、实验小结
通过这次实验,我了解了微处理器的基本结构,掌握了计算机工作原理,学会了设计简单的微处理器,同时,了解了软件控制硬件工作的基本原理。
本次主要是理解相对应的Verilog代码和测试程序,之后熟悉Modelsim工具的使用流程即可。 -
计算机原理与结构 实验2《算术逻辑运算电路设计》
2019-08-04 18:25:48实验2《算术逻辑运算电路设计》 ... 试用Verilog设计一个四位二进制算术逻辑运算电路,完成加减乘除四个基本算术运算和与或非三个基本逻辑运算,采用FPGA开发版上的SW[1]-SW[4]作为输入,LEDR[1]-LED...实验2《算术逻辑运算电路设计》
一、实验目的
- 掌握:如何采用Verilog设计组合逻辑电路;
- 掌握:Quartus II 的外设器件引脚配置;
- 了解:FPGA驱动USE-Blaster的安装。
二、实验内容
试用Verilog设计一个四位二进制算术逻辑运算电路,完成加减乘除四个基本算术运算和与或非三个基本逻辑运算,采用FPGA开发版上的SW[1]-SW[4]作为输入,LEDR[1]-LEDR[5]作为输出。
三、实验方法
- 实验方法:参考书本和网络资料。
- 实验原理:Verilog语言能够支持和实现相关运算。
- 实验技术:利用ModelSim开发工具和Verilog语言实现。
- 实验方案:先查阅相关资料,制定实验步骤,再利用开发工具进行实验操作。
四、实验步骤
- 查阅相关Verilog设计算术逻辑运算电路的资料;
- .列出ALU相关功能;
Oper Data 000 a+b 001 a-b 010 a*b 011 a/b 100 a&b 101 a 110 ~a, ~b - 利用Verilog语言编写实现代码;
module ALU_4bit(data,a,b,oper,EN); input [3:0] a,b; //输入操作数 input [2:0] oper; //运算功能控制 input EN; //运算使能端,“1”允许运算 output reg[7:0] data; //输出 always @(*) begin if(!EN) data=8'b0; else ALUtask(a,b,oper,data); //调用任务 end task ALUtask; //ALU任务块 input [3:0] a,b; input [2:0] oper; output reg[7:0] data; begin case(oper) 3'b000:data = a + b; 3'b001:data = a - b; 3'b010:data = multi(a,b); //调用函数,实现a*b的运算 3'b011:data = div(a,b); 3'b100:data = a & b; 3'b101:data = a | b; 3'b110:data = {~a,~b}; default:data={a,b}; endcase end endtask //funtion multi function [7:0]multi; input [3:0] A,B; reg [7:0] count; integer i; begin count=0; for(i=1;i<4;i=i+1) begin if(A[i]) count = count + (B << i-1); end multi=count; //返回值通过函数名返回 end endfunction function [7:0]div; input [3:0] A,B; integer i; begin A = {32'h00000000,A}; B = {B,32'h00000000}; for(i = 0;i < 32;i = i + 1) begin A = {A[62:0],1'b0}; if(A[63:32] >= B) A = A - B + 1'b1; else A = A; end //yshang <= A[31:0]; //yyushu <= A[63:32]; multi=A end endmodule
-
利用Modelsim开发工具进行实验;
-
分配引脚;
-
运行测试。
-
总结实验过程,完成实验报告。
五、实验结果
实验箱运行测试结果:
说明:二极管从左到右依次为Y[3:0],开关从左到右依次为A[3:0],B[3:0],F[2:0]
加法:
或运算:
与运算:
六、实验结论
实验数据和结果运行正确,符合预期,详情见第五点。
七、实验小结
本次实验主要学会了如何通过Verilog进行设计组合逻辑电路,利用实验箱进行测试,对Modelsim操作也更加的熟悉了。
实验中主要是modelsim开发工具使用是不清楚,比如如何设计引脚,如何连接添加驱动等,通过观看老师课堂讲解视频之后就解决了。
实验有待改进的是实验测试过程记录截图不够详细,因为当时课堂实验时未明确需要的实验截图,就是间接拍了几张做记录,下次实验可以多多留心。八、实验思考
-
如何采用加法器完成加减乘除四个算术运算?
加法可以直接运算,减法采用补码表示即可转换为加法运算,乘法和除法需要先通过移位操作才能运算。 -
如何在计算机中安装USB驱动程序usb-blaster?
可以参考视频指导进行安装。
将USB接口插入电脑,之后选择【控制面板】→【硬件和声音】→【设备管理器】→【其他设备】中会显示【USB-Blaster】→右键选择【更新驱动/程序软件】→【浏览计算机以查找驱动程序软件】→选择电脑中的安装程序所在目录→【下一步】→【关闭】。按照操作步骤正常情况下即可成功安装。 -
如何在Quartus II中分配FPGA引脚?如何处理暂不用的引脚?
在Quartus II软件中,选择“Assignments -> Pin”标签(或者点击 按钮) ,打开Pin Planner,之后安装试验箱中的参考书本的建议进行选择即可。
-
计算机原理与体系结构
2016-04-28 10:51:21计算机原理和体系结构,适用于初学者入门,了解计算机的基本构造 -
计算机组成原理与系统结构答案(包健&冯建文版).7z
2020-07-15 15:11:23计算机组成原理与系统结构答案、希望和各位同学一起分享! -
计算机组织与结构(计算机组成原理).rar
2021-07-11 13:07:53本资源为计算机组织与结构(计算机组成原理),包括理论部分和实验部分,理论部分包括考研408教材,南昌大学教材习题部分答案,南昌大学计组专用教材(内涵部分习题解答),实用性还是挺强的。实验部分包括南昌大学... -
计算机组成原理与结构期末试卷
2019-02-17 14:07:24本文档主要是关于计算机组成原理与结构的期末试卷,无答案 -
宁波大学《计算机组成原理与结构》期末复习题(含答案).pdf
2021-02-02 20:46:06宁波大学《计算机组成原理与结构》期末复习题(含答案) -
计算机组成原理与系统结构(第二版)包健版课后习题答案
2018-07-29 23:04:06计算机组成原理与系统结构(第二版)包健版课后习题答案 -
《计算机组成原理与系统结构》课后习题答案.pdf
2021-03-12 21:27:49《计算机组成原理与系统结构》课后习题答案 -
计算机组成原理与体系结构实验课的异或指令.zip
2019-12-24 17:06:36计算机组成原理与体系结构实验课上最后要做的一条指令,我做的这个指令是异或指令,使用工具为CMStudio计算机组成原理与体系结构集成开发系统。指令文件和过程截图都在。 -
计算机原理 第二章 微处理器结构与工作原理.ppt
2022-06-27 22:45:51计算机原理 第二章 微处理器结构与工作原理.ppt -
西安电子科技大学081201 计算机系统结构计算机组成原理题库.zip
2020-03-25 16:22:19西安电子科技大学081201 计算机系统结构计算机组成原理题库.zip -
计算机原理 第二章 微处理器结构与工作原理1.ppt
2022-06-27 22:46:06计算机原理 第二章 微处理器结构与工作原理1.ppt -
计算机组成原理与系统结构.docx
2022-07-06 10:29:07计算机组成原理与系统结构.docx计算机组成原理与系统结构.docx计算机组成原理与系统结构.docx计算机组成原理与系统结构.docx计算机组成原理与系统结构.docx计算机组成原理与系统结构.docx计算机组成原理与系统结构.... -
计算机组成原理与系统结构.pdf
2022-07-09 23:54:01计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf计算机组成原理与系统结构.pdf... -
《计算机组成原理与系统结构》实验指导书.docx
2022-07-05 23:58:12《计算机组成原理与系统结构》实验指导书.docx《计算机组成原理与系统结构》实验指导书.docx《计算机组成原理与系统结构》实验指导书.docx《计算机组成原理与系统结构》实验指导书.docx《计算机组成原理与系统结构》... -
408四门思维导图,数据结构,操作系统,计算机网络,计算机组成原理
2021-08-24 21:14:53408四门思维导图,数据结构,操作系统,计算机网络,计算机组成原理。 408考研的思维导图源文件,可以自己修改编辑。当时自己花了几个月做的。 -
计算机组成原理实验报告-MIPS指令系统和MIPS体系结构.doc
2021-08-21 09:21:08计算机组成原理实验报告-MIPS指令系统和MIPS体系结构 -
《计算机组成原理与系统结构》实验指导书 (3).pdf
2022-07-06 01:04:06《计算机组成原理与系统结构》实验指导书 (3).pdf《计算机组成原理与系统结构》实验指导书 (3).pdf《计算机组成原理与系统结构》实验指导书 (3).pdf《计算机组成原理与系统结构》实验指导书 (3).pdf《计算机组成原理... -
《计算机组成原理与系统结构》实验指导书 (2).docx
2022-07-05 23:57:34《计算机组成原理与系统结构》实验指导书 (2).docx《计算机组成原理与系统结构》实验指导书 (2).docx《计算机组成原理与系统结构》实验指导书 (2).docx《计算机组成原理与系统结构》实验指导书 (2).docx《计算机组成... -
《计算机组成原理与系统结构》实验指导书 (2).pdf
2022-07-05 23:44:28《计算机组成原理与系统结构》实验指导书 (2).pdf《计算机组成原理与系统结构》实验指导书 (2).pdf《计算机组成原理与系统结构》实验指导书 (2).pdf《计算机组成原理与系统结构》实验指导书 (2).pdf《计算机组成原理... -
TD-CMA计算机组成原理与系统结构教学实验系统.pdf
2022-07-05 23:31:23TD-CMA计算机组成原理与系统结构教学实验系统.pdfTD-CMA计算机组成原理与系统结构教学实验系统.pdfTD-CMA计算机组成原理与系统结构教学实验系统.pdfTD-CMA计算机组成原理与系统结构教学实验系统.pdfTD-CMA计算机组成... -
TD-CMA计算机组成原理与系统结构教学实验系统.docx
2022-07-05 22:13:51TD-CMA计算机组成原理与系统结构教学实验系统.docxTD-CMA计算机组成原理与系统结构教学实验系统.docxTD-CMA计算机组成原理与系统结构教学实验系统.docxTD-CMA计算机组成原理与系统结构教学实验系统.docxTD-CMA计算机... -
832计算机组成原理与数据结构(计算机新增考试大纲).pdf
2021-10-06 10:57:58832计算机组成原理与数据结构(计算机新增考试大纲).pdf -
计算机组成原理与体系结构知识概括
2020-08-30 23:12:39计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。计算机系统的属性通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技计算机组成原理与体系结构知识概括
计算机组成原理与体系结构
关系解释:
- 计算机系统是由硬件和软件两部分组成,《计算机组成原理》讲述的是计算机的硬件组成原理,《操作系统》讲述的是配置在计算机硬件上的第一层软件
- 计算机组成原理是讲硬件实现的,计算机系统结构是讲结构设计的
- 计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。计算机系统的属性通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O机理等,大都属于抽象的属性。由于计算机系统具有多级层次结构,因此,站在不同层次上编程的程序员所看到的计算机属性页是各不相同的。
- 计算机组成原理是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。例如,指令系统体现了机器的属性,这是属于计算机结构的问题。但指令的实现,即如何取指令、分析指令、取操作数、运算、送结果等,这些属于计算机组成的问题。例如,一台机器是否具备乘法指令的功能,这是一个结构的问题,可是,实现乘法指令采用什么方式,则是一个组成问题。
- 微机原理 只是对非计算机专业的学生开的,大部分将8086的结构以及如何工作,还有汇编语言怎麼写。
计算机组成原理 探讨计算机的各个部分怎麼实现(电路)。
计算机体系结构讲的是在计算机组成原理的基础上,如何根据不同的场景和使用情况的设计计算机,以及各种设计的优缺点。
举例:
①缓存来说,计算机组成原理讲的是缓存怎麼做的(DRAM四个晶体管构成一个单元),而计算机体系结构讲的是缓存在cpu里怎么用(多级缓存,不同级别的缓存采用不同的寻址方式),才可以达到最大性能,不同使用方法的优缺点以及在实际中根据不同情况怎么折衷。
②在计算机组成原理里讲的硬盘怎么做的,磁头读写的物理机制,而计算机体系结构讲如何设计磁盘排列才能以最低的成本使发生意外数据损失的概率达到要求
计算机组成原理
计算机的发展历史
计算机的层次与编程语言
程序翻译和程序解释
程序翻译和程序解释:
- 计算机执行的指令都是L0
- 翻译过程生成新的L0程序,解释过程不生成新的L0程序
- 解释过程由L0编写的解释器去解释L1程序
程序翻译和程序解释语言:
- 程序翻译语言:C/C++,Object-C,Golang
- 程序解释语言:Python,PHP,Javascript
- 程序+翻译语言:Java,C#
计算机的层次与编程语言
计算机层次:-
硬件逻辑层: 门,触发器等逻辑电路组成, 属于电子工程领域
-
微程序机器层:编程语言是微指令集,微指令所组成的微程序直接交由硬件执行
-
传统机器层:编程语言是CPU指令集(机器指令),编程语言是直接和硬件相关的,不同架构的CPU使用不同的CPU指令集。
-
操作系统层:向上提供了简易的操作界面,向下对接了指令系统,管理硬件资源,操作系统层是在软件和硬件之间的适配层。
-
汇编语言层:编程语言是汇编语言,汇编语言可以直接翻译成可直接执行的机器语言,完成翻译的过程的程序就是汇编器。
-
高级语言层:编程语言为广大程序员所接受的高级语言,高级语言的种类非常多,有几百种
-
应用层:满足计算机针对某种用途而专门设计
冯诺依曼结构
冯诺依曼结构:
南北桥架构演变:
存储程序的概念:
- 数据和程序均以二进制代码形式不加区别地存放在存储器中,存放的位置由存储器的地址指定。
- 计算机在工作时能自动地从存储器中取出指令加以执行。
数学家冯·诺依曼(von Neumann)在研究EDVAC机时提出了“储存程序”的概念.以此为基础的各类计算机通称为冯·诺依曼机.它有如下特点:
- 计算机由运算器,控制器,存储器,输入和输出五部分组成
- 指令和数据以同等的地位存放于存储器内,并可按地址寻访
- 指令和数据均用二进制数表示
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置
- 指令在存储器内按顺序存放
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
- 运算器用来完成算术运算和逻辑运算并将的中间结果暂存在运算器内
- 存储器用来存放数据和程序
- 控制器用来控制,指挥程序和数据的输入,运行以及处理运行结果
- 输入设备用来将人们熟悉的信息转换为机器识别的信息
- 输出设备将机器运算结果转为人熟悉的信息形式
指令系统
机器指令的形式
指令由操作码和操作数组成:
操作码 地址码 ①操作码指明本指令完成的操作②操作码的位数反映了机器操作的种类 ①地址码直接给出操作数或者操作数的地址②地址码分三地址指令、二地址指令、一地址指令。 地址码形式:
- 三地址指令:
- 二地址指令:
- 一地址指令:
- 零地址指令:
机器指令的操作类型
- 数据传输
①寄存器之间、寄存器与存储单元、存储单元之间
②数据读写、交换地址数据、清零置一等操作 - 算术逻辑操作
①操作数之间的加减乘除运算
②操作数的与或非等逻辑位运算 - 移位操作
① 数据左移(乘2)、数据右移(除2)
②完成数据在算术逻辑单元的必要操作 - 控制指令
①等待指令、停机指令、空操作指令、中断指令。
机器指令的寻址方式
指令寻址:
- 顺序寻址
- 跳跃寻址
数据寻址:
-
立即寻址
-
直接寻址
-
间接寻址
计算机指令执行的过程
计算机的工作过程就是执行指令的过程
指令执行过程
指令执行过程:
- 取指令
- 分析指令
- 执行指令
CPU的流水线设计
CPU的流水线设计:
- 类似工厂的装配线
- 工厂的装配线使得多个产品可以同时被加工
- 在同一时刻,不同的 产品均处于不同的加工阶段
校验码CheckDigit
数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法.其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码.
这样,可以通过检测编码的合法性来达到发现错误的目的.合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的.
码距:码距根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为1.
定点数和浮点数
定点数和浮点数发展简述:
- 定点数,所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。通常将定点数据表示成纯小数或纯整数,为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前;而为了将数表示成纯整数,则把小数点固定在数值部分的最后面,如下图所示:
- 定点数表示法的缺点在于其形式过于僵硬,固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大或特别小的数,最终,绝大多数现代的计算机系统采纳了浮点数表达方式,这种表达方式利用科学计数法来表达实数,即用一个尾数(Mantissa,尾数有时也称为有效数字,它实际上是有效数字的非正式说法),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数,比如123.45用十进制科学计数法可以表示为1.2345x102,其中1.2345为尾数,10为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。
- 定点数与浮点数区别
定点数简介:
- 顾名思义定点数就是小数位固定不变的数叫做定点数,也就是小数点是定在某个位置不变的数。
定点数的分类:
- 定点整数:定点整数的小数点后面没有其他的数值,即小数点定在了数的最后面。
- 定点小数即纯小数(但好多博客都说小数的位数和正数的位数可以事先约定,那这样的话就不是纯小数了,这一点还有疑惑),小数点的位置固定在最高有效数位之前、符号位之后,如图1所示。定点小数的小数点位置是隐含约定的,小数点并不需要真正地占据一个bit。
浮点数简介:
- 浮点数是一种 公式化 的表达方式,用来近似表示实数(浮点数也是实数),并且可以在表达范围和表示精度之间进行权衡(因此被称为浮点数)。
- 浮点数通常被表示为:N=M×R^E
比如: 12.345=1.2345×10^1 - 其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码。计算机中一般规定R基础为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。JAVA中为2
- 因此,在已知标准下,要表示浮点数,
①是要给出尾数M的值,通常用定点小数形式表示(这里表示:纯小数),它决定了浮点数的表示精度,即可以给出的有效数字的位数。
②是要给出阶码,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。因此,在计算机中,浮点数通常被表示成如下格式:(假定为32位浮点数,基为2,其中最高位为符号位)
关于 java 的 float 和 double:
-
Java 语言支持两种基本的浮点类型: float 和 double 。java 的浮点类型都依据 IEEE 754 标准。IEEE754 定义了32 位和 64 位双精度两种浮点二进制小数标准。
-
IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。32 位浮点数用 1 位表示数字的符号,用 8 位来表示指数,用 23位来表示尾数,即小数部,作为有符号整数的指数可以有正负之分,小数部分用二进制(底数 2 )小数来表示。对于64 位双精度浮点数,用 1位表示数字的符号,用 11 位表示指数,52 位表示尾数。如下两个图来表示:
①float(32位):
②double(64位):
计算器功能和机构
计算器组成部分:
算术逻辑单元ALU的功能和机构:- ALU部件是运算器中的主要组成部分,又称多功能函数发生器,主要用于完成各种算术运算和逻辑运算.
- ALU的算术运算部件包含加法器,减法器,乘法器,除法器,增量器(+1),减量器(-1),BCD码运算器等组件.
- ALU的主要工作是根据CPU指令要求执行各种指定运算,如加法,减法,乘法,除法,比较,逻辑移位等操作.
数据缓冲器:
- 分为输入缓冲和输出缓冲
- 输入缓冲暂时存放外设送过来的数据
- 输出缓冲暂时存放送往外设的数据
控制器的功能和机构
控制器的功能:
计算机对信息进行处理(或计算)是通过程序的执行而实现的,程序是完成某个确定算法的指令序列,要预先存放在存储器中.控制器的作用是控制程序的执行,它必须具有以下基本功能:1).取指令
2).分析指令
3).执行指令
计算机不断重复顺序执行上述三种基本操作:取指,分析,执行;再取指,再分析,再执行,如此循环,直到遇到停机指令或外来的干预为止.
4).控制程序和数据的输入与结果输出
根据程序的安排或人的干预,在适当的时候向输入输出设备发出一些相应的命令来完成I/O功能,这实际上也是通过执行程序来完成的.
5).对异常情况和某些请求的处理
当机器出现某些异常情况,诸如算术运算的溢出和数据传送的奇偶错等;或者某些外来请求,诸如磁盘上的成批数据需送存储器或程序员从键盘送入命令等,此时由这些部件或设备发出:
(1)“中断请求”信号.
(2)DMA请求信号.
控制器的组成部分:
程序计数器:- 程序计数器用来存储下一条指令的地址
- 循环从程序计数器中拿出指令
- 当指令被拿出时,指向下一条指令。
时序发生器:
- 电气工程领域,用于发送时序脉冲
- CPU依据不同的时序脉冲有节奏的进行工作。
指令译码器:
- 指令译码器是控制器的主要部件之一
- 计算机指令由操作码和地址码组成
- 翻译操作码对应的操作 以及控制传输地址码对应的数据
存储器
存储器分类:
存储器的层次结构:
缓存、主存、辅存的作用:- 缓存-主存层次主要解决CPU和主存速度不匹配的问题
- 主存-辅存层次主要解决存储系统的容量问题
- 从CPU角度来看缓存-主存层次的速度接近于缓存,高于主存;其容量和价位却接近于主存,这就从速度和成本的矛盾中获得了理想的解决办法.
- 主存-辅存层次从整体分析,其速度接近于主存,容量接近于辅存,平均价位也接近于低速的、廉价的存储价位,这又解决了速度、容量、成本这三者之间的矛盾.(当主存需要计算的空间不足时会借助辅存来计算)
高速缓冲存储器:
高速缓存不是寄存器,是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。只读存储器(ROM):
只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。
主存
- 主存也就是常说的内存
- 当计算机断电时,内存数据会丢失
- 内存是一种随机存储存储器(RAM)
- RAM是一种通过电容存储数据,必须每隔一段时间刷新一次
辅存
- 辅存也就是常说的外存,也就是磁盘
- 当计算机断电时,磁盘数据不会丢失
- 磁盘表面是一种可磁性的硬磁特性材料
缓存
- 缓存(Cache)通常由两部分组成,块表和快速存储器.其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache.否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系.
- Cache中主存块的替换算法
随机算法RAND
先进先出FIFO
近期最少使用法LRU
优化替换算法OPT
虚拟存储器
- 虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间.从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度.
- 虚拟存储器的访问也涉及到虚地址与实地址的映象,替换算法等,这与Cache中的类似,前面我们讲的地址映象以块为单位,而在虚拟存储器中,地址映象以页为单位.设计虚拟存储系统需考虑的指标是主存空间利用率和主存的命中率.
- 虚拟存储器与Cache存储器的管理方法有许多相同之处,它们都需要地址映象表和地址变换机构.但是二者也是不同的.
- 虚拟存储器的三种不同管理方式:按存储映象算法,分为段式,页式和段页式等,这些管理方式的基本原理是类似的.
寄存器
- 指令寄存器(IR)
①用以存放当前正在执行的指令,以便在指令执行过程中,控制完成一条指令的全部功能. - 通用寄存器组(GPRs)
①是一组存取速度最快的存储器,用于保存参加运算的操作数和中间结果.访问寄存器无需高速缓存,也不需要运行总线周期,因此指令的执行速度很快.几乎所有的指令都要将寄存器指定为一个操作数,有些指令还要求将操作数存放在专用的寄存器中. - 主存数据寄存器(MDR)
①发送到或从数据线取来的信息存放在主存数据寄存器中 - 主存地址寄存器(MAR)
①CPU送到地址线的主存地址应先存放在主存地址寄存器 - 标志寄存器(状态字寄存器)
①ALU运算的结果会产生标志信息,例如结果是否为0(零标志ZF),这些标志信息需要记录在专门的标志寄存器中。
②存放运算状态(条件码,进位,溢出,结果正负等)
③存放运算控制信息(调试跟踪标记位,允许中断位等)
总线
总线概述:
- 总线是连接各个部件的信息传输线,是各个部件共享的传输介质,总线上信息的传送分为串行和并行传输
总线的分类:
-
片内总线:芯片内部的总线
-
系统总线:计算机各部件之间 的信息传输线
1、数据总线:双向 与机器字长,存储字长有关
2、地址总线:单向 与存储地址, I/O地址有关
3、控制总线:部分出部分入 控制器控制所有部件
总线仲裁:
- 由于总线上连接着多个部件,何时由哪个部件发送信息,如何定时,如何防止信息丢失,如何避免多个设备同时发送,如何规定接收部件等一系列问题都需要总线控制器统一管理,主要包括总线的判优控制(仲裁逻辑)和通信控制.
- 总线仲裁逻辑可分为集中式和分布式两种,前者将控制逻辑集中在一处(如在CPU中),后者将控制逻辑分散在总线的各个部件之上.
总线标准:
- 总线标准是用来规范系统与各模块、模块与模块之间的一个互联的标准。
- 有了总线标准,不同的厂商就可以按照同样的标准和规范来生产设备,达到互通互联的目的。
- 常见标准:ISA、PCI、USB、PCIe。
CPU与IO设备的通信
DMA 方式与程序中断方式的比较
– 中断方式 DMA方式 (1) 数据传送 程序 硬件 (2) 响应时间 指令执行结束 2 存取周期结束 (3) 处理异常情况 能 不能 (4) 中断请求 传送数据 后处理 (5) 优先级 低 高 程序中断方式
- 计算机在执行程序的过程中,当出现异常情况或者特殊情况时,CPU停止当前程序的运行,转向对这些异常情况或者特殊情况的处理,处理结束之后再返回到现行程序的间断处继续运行,该过程就是中断.
- 程序中断是一种低速设备通知CPU的一种异步方式
- CPU可以高速运转同时兼顾低速设备的响应
DMA方式
- DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送.
- 数据传送是在DMA控制器控制下进行的,由DMA控制器给出当前正在传送的数据字的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束.在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据.在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理.
- DMA工作时不需要CPU的参与
计算机体系结构
计算机体系结构:- 计算机体系结构(ComputerArchitecture)是程序员所看到的计算机的属性,即概念性结构与功能特性。按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。一般来说,低级机器的属性对于高层机器程序员基本是透明的,通常所说的计算机体系结构主要指机器语言级机器的系统结构。(也就是针对冯诺依曼结构的层次)经典的关于“计算机体系结构(computerarchitecture)”的定义是1964年C.M.Amdahl在介绍IBM360系统时提出的,其具体描述为“计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性”
- 计算机体系结构就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。通常包含的系统元素有:计算机软件、计算机硬件、人员、数据库、文档和过程。其中,软件是程序、数据结构和相关文档的集合,用于实现所需要的逻辑方法、过程或控制;硬件是提供计算能力的电子设备和提供外部世界功能的电子机械设备(例如传感器、马达、水泵等);人员是硬件和软件的用户和操作者;数据库是通过软件访问的大型的、有组织的信息集合;文档是描述系统使用方法的手册、表格、图形及其他描述性信息;过程是一系列步骤,它们定义了每个系统元素的特定使用方法或系统驻留的过程性语境。
计算机体系结模型:
- 机内数据表示:硬件能直接辨识和操作的数据类型和格式
- 寻址方式:最小可寻址单位、寻址方式的种类、地址运算
- 寄存器组织:操作寄存器、变址寄存器、控制寄存器及专用寄存器的定义、数量和使用规则
- 指令系统:机器指令的操作类型、格式、指令间排序和控制机构
- 存储系统:最小编址单位、编址方式、主存容量、最大可编址空间
- 中断机构:中断类型、中断级别,以及中断响应方式等
- 输入输出结构:输入输出的连接方式、处理机/存储器与输入输出设备间的数据交换方式、数据交换过程的控制
- 信息保护:信息保护方式、硬件信息保护机制。
计算机体系结构-发展历程:
- 第一阶段
60年代中期以前,是计算机系统发展的早期时代。在这个时期通用硬件已经相当普遍,软件却是为每个具体应用而专门编写的,大多数人认为软件开发是无需预先计划的事情。这时的软件实际上就是规模较小的程序,程序的编写者和使用者往往是同一个(或同一组)人。由于规模小,程序编写起来相当容易,也没有什么系统化的方法,对软件开发工作更没有进行任何管理。这种个体化的软件环境,使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,根本没有其他文档资料保存下来。 - 第二阶段
从60年代中期到70年代中期,是计算机系统发展的第二代。在这10年中计算机技术有了很大进步。多道程序、多用户系统引入了人机交互的新概念,开创了计算机应用的新境界,使硬件和软件的配合上了一个新的层次。实时系统能够从多个信息源收集、分析和转换数据,从而使得进程控制能以毫秒而不是分钟来进行。在线存储技术的进步导致了第一代数据库管理系统的出现。计算机系统发展的第二代的一个重要特征是出现了“软件作坊”,广泛使用产品软件。但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。随着计算机应用的日益普及,软件数量急剧膨胀。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机课题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。 - 第三阶段
计算机系统发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。在这10年中计算机技术又有了很大进步。分布式系统极大地增加亍计算机系统的复杂性,局域网、广域网、宽带数字通信以及对“即时”数据访问需求的增加,都对软件开发者提出了更高的要求。但是,在这个时期软件仍然主要在工业界和学术界应用,个人应用还很少。这个时期的主要特点是出现了微处理器,而且微处理器获得了广泛应用。以微处理器为核心的“智能”产品随处可见,当然,最重要的智能产品是个人计算机。在不到10年的时间里,个人计算机已经成为大众化的商品。 - 第四阶段
在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。由复杂操作系统控制的强大的桌面机及局域网和广域网,与先进的应用软件相配合,已经成为当前的主流。计算机体系结构已迅速地从集中的主机环境转变成分布的客户机/服务器(或浏览器/服务器)环境。世界范围的信息网为人们进行广泛交流和资源的充分共享提供了条件。软件产业在世界经济中已经占有举足轻重的地位。随着时代的前进,新的技术也不断地涌现出来。面向对象技术已经在许多领域迅速地取代了传统的软件开发方法。
-
计算机组成原理与系统结构.7z
2022-07-01 11:07:22计算机组成原理与系统结构.7z -
[计算机组成原理] 冯诺依曼结构原理及层次结构分析
2019-07-29 22:22:48文章目录一、冯诺依曼简介二、冯诺依曼计算机的工作原理1、存储程序(存储系统构建与快速访问)2、程序控制(指令系统、控制器设计等)三、冯诺依曼计算机的组成(硬件+软件)1、硬件系统运算器控制器存储器输入/... -
王道2019最新计算机考研计算机数据结构-计算机组成原理.rar
2019-07-16 17:36:40王道2019最新计算机考研计算机数据结构电子版-计算机组成原理电子版,二样电子版集锦 -
2016计算机考研讲义+网络+数据结构+组成原理
2018-07-28 12:33:122016计算机考研的四门专业课讲义,包含C语言,计算机网络,数据结构,组成原理,都是总结的基本考点,很详细