系统

数据通信基础知识

数据通信系统基础 由于物理层是直接交换bit的层次,其大部分知识都依赖于数据通信专业课程,需要给出相关的基础知识。数据通信系统可以划分为如下3部分: 1) 源系统:又分为源点(信源/源站)和发送器两部分。前者产生bit数据,后者对其进行编码,比如调制器就是一种发送器,更常见的是调制解调器; 2) 目的系统:又分为接收器和终点(信宿/目的站)两部分。前者获取传入信号,将其转化为bit数据,比如解调器就是一种接收器,更常见的是调制解调器; 3) 传输系统:既可以是简单的传输线,也可以是复杂的传输网络; 下面是关于“信息”的3个不同维度的术语: 1) 消息:需要传输的具体数据实体,比如说“3张图”、“1个word文件”等等; 2) 数据:实际运送消息的实体,RFC4949的定义是按特定方式表述的信息,通常是有意义的符号序列;… 阅读全文

数字逻辑层概述

数字逻辑层概述 由最底层提供给数字逻辑层的基本电路单元包括5种门(gate)。数字逻辑层主要讨论如何用各种门搭建能实现具体功能的门电路,它们被作为功能单元提供给微体系结构层。事实上很难做到仅讨论上面所规定的内容,首先必须明确更高层提供给该层的数据表示什么,否则无法设计相关的门电路,所以之后将这部分内容称为机器级数据表示,并在该层额外讨论。另外由于这里主要关注CPU的设计,所以之后不会完整讨论一些硬件的门电路实现,但为理解计算机系统的整体运转机制,仍需明确这些硬件与外界的通信规则,所以之后将这部分内容称为接口技术,并在该层额外进行讨论。   门通常在数字逻辑层无需关心这5种门的内部构造,但这里还是说明一种用NPN三极管的电子开关特性构造5种门的方法。在上图第一行最左边的电路中,称对地电势0~0.5V为低电平,1~1.5V为高电平,规定\(V_{cc}\)恒为1.5V,将电势\(V_{in},V_{out}\)分别作为该电路的输入和输出。通常NPN三极管元件的导通压降在0.7V左右,当输入为低电平时,射极和集极相当于开路,\(V_{out}=V_{cc}\),所以输出为高电平,当输入为高电平时,射极和集极相当于短路,\(V_{out}=0\),所以输出为低电平。这种输入低电平输出高电平,输入高电平输出低电平的电路称为非门。通过串并联NPN三极管可得上图第一行的另外2个电路,它们都有\(V_1,V_2\)两个输入和\(V_{out}\)一个输出,分别称为与非门和或非门。最后将与非门的输出接入非门可得与门,将或非门的输出接入非门可得或门。… 阅读全文

组合逻辑单元

组合逻辑电路(combinational logic circuit) 组合逻辑电路是指在任何时刻,输出状态只决定于该时刻各输入状态的组合,与其他时间的状态无关的电路。组合逻辑电路的功能可以用逻辑函数或真值表描述。接下来会讨论一些计算机内部经常用到的组合逻辑电路单元。   多路选择器(multiplexers)上图就是1个多路选择器,其输入分为两部分,\(D_0\)~\(D_1\)是8个“待选择”的输入,而\(ABC\)则是提供“如何选择”的信息的。其功能是根据\(ABC\)状态的共\(2^3\)种组合,表示将8个“待选择”的输入中的哪一个送入后面的或门。当\(ABC\)的组合表示要选择某个\(D\)时,该\(D\)对应的与门收到的所有其他输入都是真,也就是该与门的输出会与其对应的输入\(D\)保持一致。而其他与门的输入将至少有1个为假。… 阅读全文

MIC-1的数据通路与微指令

IJVM与MIC-1 微体系结构层夹在数字逻辑层和指令系统层之间。设计CPU时通常先大致确定指令系统,然后设计微体系结构实现它,或是两者是并行设计的。通常RISC(精简指令集)的很多指令可在单个时钟周期完成。而Intel酷睿的x86指令集属于CISC(复杂指令集),一条指令可能需要多个时钟周期,会被分为多个操作步骤,其控制方式和简单的指令系统有较大区别。 微体系结构层没有太多一般性原理,很多都是特例。所以在学习微体系结构层时,需要预先引入一种具体的指令系统,然后再考虑怎么构建微体系结构层实现指令系统。这里将要引入的指令系统是JVM的一种子集IJVM,其仅包含部分整数指令,并且不包含面向对象特性。IJVM指令通常只有1-2个字段,第1个字段都是操作码(opcode),用于标识指令,有的包含操作数(operand)字段,用于提供额外信息。… 阅读全文

完整的MIC-1微体系结构

MIC-1的组成完整的MIC-1微体系结构如上图所示,其由数据通路和控制部分组成。这里需要说明一下控制部分所引入的部件,以及之前没讨论到的一部分数据通路上的信号: 1) 控制存储器:计做CS,图中512*36位的只读存储器,是控制部分最重要的电路,其固化了用于实现ISA指令的所有微指令,其至多能存储512条微指令,其功能和只读内存相似,其中的每条微指令都有自己的地址,微指令的地址也叫微地址。该CS接受的输入是微地址,输出是微指令。由于实现指令系统类似于在CS中写程序(填微指令),所以也把整个CS中的微地址和微指令统一称为微程序; 2) 微程序计数器:图中MPC,功能类似MAR,是微地址的寄存器; 3) 微指令寄存器:图中MIR,存储将要执行的微指令。上图MIR画的很像微指令; 4) N与Z连接的方框:两个1位触发器,其数据写入时机和“内存写入寄存器”、“C总线写入寄存器”一样,也是时钟上升沿的边沿触发;… 阅读全文

IJVM的内存模型与指令集

栈内存模型通常编程语言支持过程(procedure)和方法(method)。过程就像编程里的函数调用,有自己的局部变量,中间结果等。过程在返回后,其局部变量消失。这意味着需要对局部变量有效的管理,容易想到给每个局部变量固定地址,但这是不行的,因为过程支持自己调用自己(递归),这将导致地址冲突。这里引入基于栈的局部变量管理,简单来说就是划分内存区域放局部变量,用数据结构栈的形式管理。 上图给出了一种编程语言执行算术表达式a1=a2+a3的栈内存的活动情况。在执行表达式前通常会声明a1,a2,a3变量,所以栈底的3个元素为a1,a2,a3。在执行算术计算时,第一步是前后将a2,a3入栈,然后通过算数指令弹出栈顶两个元素,得到其和,然后把和入栈,最后把和赋值给a1(图d在原来a1的位置写了a2+a3,目的是表示a1被赋值)。… 阅读全文

用MIC-1微指令实现IJVM

MIC-1的寄存器功能 之前陆陆续续讨论过大部分寄存器的作用,这里统一的明确和汇总一下: 1) MAR:32位内存地址寄存器。为read/write内存操作提供内存字地址。用于IJVM方法区以外的区域的内存地址,这些地址对应的数据都是1个字的长度; 2) MDR:32位内存数据寄存器。存放read从内存取回的32位数据、write要写入内存的32位数据; 3) PC:32位程序计数器。为fetch内存操作提供内存字节地址。通常每次fetch取的是IJVM方法区的IJVM指令的1个字节,并且通常是顺序读取的,即下次fetch的地址是PC+1; 4) MBR:8位内存缓冲寄存器。存放fetch操作从内存取回的8位数据。其作为输出时必然会按符号扩展或无符号扩展中的一种方式,把32位数据送上B总线; 5) SP:32位寄存器,指向IJVM栈的栈顶的内存地址;… 阅读全文
滚动至顶部