计组-实验-P4
CPU设计
概述
本次我设计的verilog单周期CPU支持21条指令,采用多个模块进行设计。
所采用模块化设计为:
IFU:指令单元,接受指令地址PC来给出当前周期处理的指令
GRF:寄存器模块,通过该模块统一进行32个寄存器的读写
NPC:计算下一条指令的地址,接受jump,branch等指令来支持跳转操作
ALU:进行运算操作,该ALU操作码为4为
DM:内存组,通过内置的RAM实现
Branch Control:分支跳转模块,判断是否该跳转
ControlUnit:指令控制单元,通过接受op和func来发出指令,控制数据通路中的MUX
本次CPU的架构和P3作业中搭建的CPU架构相同,架构为:
支持指令
支持40条指令,为:
R指令:add,addu,sub,subu,and,or,xor,nor,sll,sllv,srl,srlv,sra,srav,slt,sltu
I指令:addi,addiu,slti,sltiu,andi,ori,xori,lui,beq,bne,bgez,bgtz,blez,bltz,sw,lw,sh,sb,lh,lb
J指令:j,jr,jal ...
计组-实验-P3
CPU设计
概述
本次我设计的logisim单周期CPU支持21条指令,采用多个模块进行设计。
所采用模块化设计为:
IFU:指令单元,接受指令地址PC来给出当前周期处理的指令
GRF:寄存器模块,通过该模块统一进行32个寄存器的读写
NPC:计算下一条指令的地址,接受jump,branch等指令来支持跳转操作
ALU:进行运算操作,该ALU操作码为4为
DM:内存组,通过内置的RAM实现
ControlUnit:指令控制单元,通过接受op和func来发出指令,控制数据通路中的MUX
支持指令
支持21条指令,为:
R指令:add,addu,sub,or,sll,sllv,slt,sltu
I指令:ori,lui,beq,sw,lw,sh,sb,lh,lb
J指令:j,jr,jal,jalr
数据通路模块定义
IFU:指令单元
该模块内部包含PC(程序计数器)和IM(指令存储器)。PC通过logism内置的寄存器实现, IM通过Logisim内置的ROM实现(容量为24*32bit)。可以根据PC的值从IM取出对应的指令。
端口定义
信号名
方向
位宽
具体翻译
...
计组-理论-总线和IO
总线
总线的概念
计算机部件的连接方式:分散连接->总线连接
总线:连接多个功能部件的一组公共的信号传输线。通过总线,计算机在各部件之间实现地址、数据和控制信息的交换
连接多个部件的信息传输线,多个部件共享的传输介质
为了避免冲突,在一个时刻只允许有一个部件向总线发送信息,其他多个部件可以同接收
总线实际上是由许多传输线组成,每条线可传输一位二进制码,一串二进制码在一段时间内注意传输。要传输多位宽信息则需要用若干条传输线同时传输
特征
机械特性:机械连接方式,如几何尺寸、引脚数量、插头标准
电气特性:信号传输方向、有效电平、电平逻辑(正逻辑、负逻辑)等
功能特性:信号功能定义
时间特性:信号之间的时序关系
设计要素/性能指标
总线的设计要素:
类型:专用/复用;地址总线和数据总线是否复用
仲裁方式:集中式/分布式
时序:同步/异步方式;总线上的数据与时钟同步工作的总线为同步总线,与时钟异步的为总线为异步总线
总线宽度:位宽
标准传输速率:每秒传输的最大字节数
信号线数:所有信号线的总数
总线的分类
片内总线:芯片内连接各元件的总线,如CPU内各寄存器、寄存器与ALU之间传递信 ...
计组-理论-虚拟存储系统
辅助存储器
区别于主存的存储设备,不直接与CPU交换数据
特点:容量大、价格低、非易失性、速度慢
磁记录方式
磁表面存储设备:磁介质+磁头
磁介质:通过磁头与介质的相对运动完成读写操作
写入操作:磁化过程。根据写入代码,确定写入驱动电流的方向,使磁表面被磁化的极性方向不同,以记录0和1
读出操作:感应过程。磁头相对磁化单元做切割磁力线运动,磁化单元的极性决定了感应电势的方向,以此区别0和1
编码方式
磁记录编码方式:怎么把一连串的二进制信息转换为磁层中一个序列的磁化反转状态,且可靠地使用电路实现这一转换过程
归零制RZ:正负脉冲电流
不归零制NRZ:正反向电流
曼彻斯特编码
调相制PM:磁化翻转方向,一般使用这种
调频制FM:磁化反转频率
曼彻斯特编码
调相制和调频制都是曼彻斯特编码,将01/10串转变为0/1的信息。每一位的中间有一次跳变。能够利用00和11识别出来确定每个位的开始和结束。
优点:跳变电平传输同步时钟信息,无需单独时钟同步信号,不含直流分量,具有很好的抗干扰能力,更适合于信道传输。
缺点:编码效率较低,数据传输率只有信号速率的 1/2。
如果曼彻斯特 ...
计组-理论-高速缓冲处理器
Cache的原理
冯诺依曼结构的基本特征:指令和数据存在一个存储器中,但在实际应用中采用了哈弗体系结构,将IM和DM分离
处理器和DRAM的速度差距越来越大,需要一个又大又快的存储器,但大和快实际上是相互制约的。于是采用多层结构,营造出又大又快的效果,确保处理器需要的大多数数据放在更快的层中
实际上cache是一个广义的概念,可以认为主存是磁盘的cache,而CPU内cache又是主存的cache,使用cache的目的就是伪造出一个容量有低层次存储器(如磁盘)那么大,而速度又有寄存器(如通用寄存器)那么快的存储器,简单来说就要让存储单元看起来又大又快。
存储访问的局部性原理
空间局部性和时间局部性
时间局部性:刚刚访问过的存储单元可能不久还会被访问(指令按序存放,地址连续,循环程序段或子程序段重复执行)
空间局部性:被访问过的存储单元的临近单元可能不久被访问(连续存放,数组元素重复,按需访问)
对于告诉缓冲处理器,其存在的前提是:
单级存储系统中,主存的存储速度与CPU的速度严重不匹配,造成CPU资源的浪费
程序运行时访问内存存在明显的局部特征:两个局部性
存在比主存DRAM速度更快 ...
计组-理论-MIPS处理器设计
处理器概述
对于CPU而言,其本质也是一个抽象的状态机,其体系结构状态对程序员可见。随着时钟周期指令的执行,CPU进行状态转移。组合逻辑进行功能的处理,时序逻辑进行状态的转移
状态=程序员可见的状态
次态=指令执行的规范
没有中间状态,每条指令对应一个状态转换
CPU的功能
CPU的功能:控制指令执行
指令的四种基本操作:取数、存数、传送、运算
取数:读取某主存单元的数据,并传送至某个寄存器;
存数:将某个寄存器中的数据存入主存某个单元之中;
传送:将某个寄存器中的数据传送至ALU或另一个寄存器;
运算:进行某种算术或逻辑运算,结果保存到某个寄存器中。
指令周期:CPU从指令寄存器中读出并执行指令功能的全部时间
取指周期:完成取指令操作和分析指令的所需时间
取数周期:从数据存储器读出操作所需的时间
执行周期:完成指令所规定的运算的所需时间
CPU的组成
分为数据通路、控制单元、总线
数据通路
数据通路(执行单元):包含了运算单元和寄存器单元
运算单元:ALU、译码器、多路选择器等
存储器、寄存器:通用寄存器组GPRs、标志寄存器FR、临时寄存器TR
控制单元
指令 ...
面向对象-Pre
Lec1-入门与项目管理
课程简介
Java语言及其初步使用技巧
基础的层次化设计思维
讲练结合,每周一个小作业
使用OO平台,但略去互测
7次作业,逐步迭代
目标:一周以内开发200行有效代码的Java程序
快乐体验:8次课,7次丝滑的迭代作业
常见错误
什么是面向对象
面向对象:以对象为中心来构建程序逻辑的方法
一切皆对象
程序逻辑:数据及其关系、行为及其关系
用类这个概念来抽象化“对象”,一个类可示例化为任意数目的对象
类:数据和行为的综合体
类关系:表征数据之间的关系或行为间关系
提供了控制复杂性的重要机制
C语言写结构体和函数是分离的,面向对象将其结合在一起
将数据和行为都封装在一起了
三个基本特征
封装:让内部复杂性外部不可见
封装了数据和方法,通过可见性来控制外部对内部数据和方法的访问
外部不用了解内部的情况,内部可进行改变而不影响外部
继承:通过抽象层次来协同降低复杂性
已有的东西不重复造轮子,相似的东西提炼出来
一个类从另一个类中获得属性和方法
建立了上下层关系:子类和父类
子类可复用父类的设计和实现,也可以进行扩展
可以增 ...
计组-实验-P2
内存操作
简介
在高级语言中,我们可以使用多维数组对内存进行多维操作,但实际上,一般这些多维数组在内存中也只是按照一维的形式连续存储的。比如二维数组 arr[2][2],他在内存中会占用 4 个单位的连续空间,分别保存 arr[0][0],arr[0][1],arr[1][0],arr[1][1]。
作为低级语言,汇编语言对内存只能进行一维操作。而为了实现多维操作,我们就需要使用一些技巧了,下面会进行举例分析。
样例分析
使用高级语言的话只需要两个 for 循环嵌套,如下:
1234567int value = 0;int arr[16][16];for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { arr[i][j] = value++; }}
使用汇编语言的话,就需要分为三步:
初始化数据
123456789.data data: .word 0 : 256 # storage for 16x16 matrix o ...
计组-实验-P1
&&是逻辑与:即判断&&两侧的表达式是否都为真,都为真则此&&表达式值为真;逻辑与结果只讲真和假
& 是按位与:即将&两侧的数用二进制展开,每一位都求与运算(二进制与运算,跟逻辑与差不多),最后得到的二进制数即为结果;按位与得出的却是实实在在的一个数
Verilog FSM 设计流程
设计流程
用 Verilog 设计有限状态机的一般步骤:
逻辑抽象,得出状态转换图。
状态化简(该步骤可以省略),如果在状态转换图中出现两个一样的状态则需要将其合并为一个状态,以得到最简的状态转换图。
状态分配,也就是状态编码。通常有很多种编码方式,比如 Gray 编码、独热编码等。在实际电路中,需综合考虑电路复杂度与电路性能之间的折中。这里的设计没有用到特别复杂的电路逻辑,所以大家可以自行决定用哪种编码方式。(不过,对于需要在FPGA上运行的电路,推荐使用独热编码方式。因为 FPGA 有丰富的寄存器资源,门逻辑相对缺乏,采用独热编码可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。)
根据状态转移图得出次态逻辑和输出逻辑。
按 ...
计组-理论-指令系统与MIPS汇编
指令系统概述
指令集系统架构(ISA)种类
Register-Memory式
多种指令可以访问内存
mips不可以直接访问内存,只能通过load-store进行访问,这是主要区别所在
存在寄存器操作数和内存操作数直接运行的指令
Load-Store式
只有load和store指令可以访问内存
运算指令操作数全为寄存器操作数
Load-Store是ISA的一种趋势
指令格式
机器指令:计算机硬件可以执行的,表示一种基本操作的二进制代码
操作码(指明操作数的位置)+操作数(实际上是地址,或者是数据本身,如I型指令)
寻址方式
形式地址:指令中直接给出的地址编码
有效地址:根据形式地址和寻址方式计算出的操作数在内存中的地址
寻址方式:根据形式地址计算到操作数的有效地址的方式
立即寻址:操作数在指令处给出,地址处是立即数
立即数存储在指令中,不额外存储在别的地方
寄存器直接寻址:值存储在寄存器中,地址为相应寄存器的编号
寄存器间接寻址:值存储在存储器中,地址是寄存器编号,寄存器中存储了所需地址
MIPS无寄存器间接寻址
基址地址/变址寻址:按基址+偏 ...