自己动手写CPU - (EPUB全文下载)

文件大小:0.96 mb。
文件格式:epub 格式。
书籍内容:

自己动手写CPU
第一篇 理论篇
第1章 处理器与MIPS
第2章 可编程逻辑器件与Verilog HDL
第二篇 基础篇
第3章 教学版OpenMIPS处理器蓝图
第4章 第一条指令ori的实现
第5章 逻辑、移位操作与空指令的实现
第6章 移动操作指令的实现
第7章 算术操作指令的实现
第8章 转移指令的实现
第9章 加载存储指令的实现
第10章 协处理器访问指令的实现
第11章 异常相关指令的实现
第三篇 进阶篇
第12章 实践版OpenMIPS处理器设计与实现
第13章 基于实践版OpenMIPS的小型SOPC
第14章 验证实践版OpenMIPS处理器
第15章 为OpenMIPS处理器移植μC/OS-II
附录A 教学版OpenMIPS各个模块的接口说明
附录B OpenMIPS实现的所有指令及对应的机器码
参考文献
反侵权盗版声明
第一篇 理论篇
第1章 处理器与MIPS
时间开始了!
——胡风·1949
让我们以一句诗意的话,开始本书的阅读。
时间从1971年11月15日开始,那一天,Intel发布了世界上第一款单芯片微处理器4004。
1.1 计算机的简单模型
计算机很复杂,可以听歌、看电影、上网、玩游戏,内部是怎么工作的,这个问题太可怕了,太复杂了。
计算机很简单,只可以做加、减、乘、除、逻辑、移位、转移、存储、加载等几类的操作,太简单了。
复杂?简单?其实取决于个人对事物的认识程度,认识得越多,了解得越深刻,那么就越接近本质,而本质往往都是简单的,比如大名鼎鼎的质能方程,一个简单的式子就解释了质量与能量的关系。
计算机就是一台计算的设备,而且是一台很基础的计算设备,只能计算小学数学课堂上讲授的四则运算,再加上一些并不复杂的与、或、非等逻辑运算,其余诸如平方、开方、微分、积分等都是做不了的。有读者会有疑惑,你说得太简单了吧,别急,且听我慢慢道来。
1.1.1 计算机的简单组成模型
计算机的组成有三大部分:处理器(Central Processing Unit,CPU)、输入输出(Input/Output,I/O)、存储器(Memory)。处理器从存储器中获取指令,然后按照指令执行一定的操作,输入/输出用来提供运算数据、显示运算结果。如图1-1所示。
图1-1 计算机的简单组成模型
存储器中存储的是指令,指令就是一条运算命令,比如:将a与b相加,结果存储到c中,处理器按照命令执行即可。目前的计算机是一个二进制的世界,所有的信息都是用0、1组合来表示的,所以一条指令就是一串0、1编码,正如图1-1所示。处理器内部具有译码功能,用来解释接收到的0、1编码表示的运算类型,据此进行运算。
1.1.2 计算机的简单使用模型
我们使用计算机上网、办公,都是通过一定的应用程序实现的,而这些应用程序实际就是一批指令的集合,当然,这里的“一批”指的是指令的数目庞大,实际上种类是非常少的,只有几百条,常用的也就几十条。通过这些指令的组织、配合,就实现了目前丰富多彩的应用。
理论上,可以直接使用0、1编码进行程序设计,但是那样显然太不方便、容易出错,于是人们使用一些助记符来表示各种指令,这就是汇编指令,使用汇编程序将汇编指令翻译为计算机可以识别的0、1编码,后来,又发明了高级语言,其语法、使用方式比汇编更加方便、更加易于理解。一般使用编译程序将高级语言编写的程序翻译为汇编指令,然后再使用汇编程序将其翻译为0、1编码。本质上是一样的。如图1-2所示。
图1-2 计算机的简单使用模型
这就是计算机的简单使用模型,无论是视频软件、浏览器,还是其他任何软件;无论是使用C#开发、Java开发,还是使用任何其他语言开发;无论是在Windows环境下运行、Android环境下运行,还是在其他任何平台下运行;无论是在ARM处理上运行、Intel处理器上运行,还是在其他任何处理器上运行;无论是在银河二号这样的大型机运行、个人使用的PC上运行,还是在其他任何机器上运行,都遵循这样的一套使用模型。
总结一下,计算机只识别0、1编码串,任何程序最终都要转变为0、1编码串,而且0、1编码的种类是有限的,计算机按照0、1编码的命令进行工作。这样一说,读者应该觉得计算机很简单了吧。
在计算机中处于核心地位的是处理器,也称为CPU,作用是识别0、1编码,据此进行各种运算和数据处理。本书的目标就是实现一个CPU。
1.2 架构与指令集
类似于不同国家的人使用不同的文字,不同的处理器也使用不同的指令,这样,为处理器A编写的程序不能直接在处理器B上使用,需要重新编写,然后再次编译、汇编后才可使用,减低了软件的移植性。显然,极为不便。
IBM为了让自己的一系列计算机能使用相同的软件,免去重复编写软件的痛苦,在它的System/360计算机中引入了指令集架构(Instruction Set Architecture,ISA)的概念,将编程所需要了解的硬件信息从硬件系统中抽象出来,这样软件人员就可以面向ISA进行编程,开发出来的软件不经过修改就可以应用在符合该ISA的所有计算机上。ISA用来描述编程时用到的抽象机器,而非这种机器的具体实现,从软件人员的角度来看,ISA包括一套指令集和一些寄存器,知道它们就可以编写程序了。
与ISA对应的一个概念是微架构(Microarchitecture),后者是前者的一个实现,比如Intel的许多处理器都是遵循x86的ISA,但是每一款处理器都有自己的微架构。ISA好比是设计规范,微架构则是具体实现,同样的ISA,不同的微架构,会带来不同的性能。
1.2.1 CISC与RISC
从大的方面,根据ISA的不同可以将计算机分为两类:复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer,RISC)。它们的主要区别是,CISC的每条指令对应的0、1编码串长度不一,而RISC的每条指令对应的0、1编码串长 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 自己动手写CPU - (EPUB全文下载)