微处理器结构简介

根据处理器体系结构的不同,可分为冯·诺依曼结构和哈佛结构两种。冯·诺依曼型的处理器以存器程序原理为基础,将程序和数据混合存放在单一存储器中,并使用单一处理部件按“取指-分析-执行”的步骤顺序执行指令,因此该结构中指令宽度和数据宽度相同。串行性作为冯·诺依曼型处理器的本质特点,主要表现在两个方面:执行指令的串行性和存储器读取的串行性。具体结构如下图所示:

哈佛结构处理器是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。具体结构如下图所示:

与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:

1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

2、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

指令集介绍

由于指令结构不同,CPU可分为RISC和CISC两种。RISC即精简指令集计算机(Reduced Instruction Set Computer)的缩写。它是一种八十年代才出现的CPU,与一般的CPU相比不仅只是简化了指令系统,而且是通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。从实现的途径看,RISC_CPU与一般的CPU的不同处在于:它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式。所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微指令的时间。

复杂指令集计算机(Complex Instruction Set Computer,CISC),早期的计算机部件比较昂贵,主频低,运算速度慢。为了提高运算速度人们不得不将越来越多的复杂指令加入到指令系统中,以提高计算机的处理效率,这就逐步形成复杂指令集计算机体系。为了在有限的指令长度内实现更多的指令,人们又设计了操作码扩展。然后为了达到操作码扩展的先决条件——减少地址码设计师又发现了各种寻址方式,如基址寻址、相对寻址等以最大限度地压缩地址长度,为操作码留出空间。CISC可以有效的减少编译代码中指令的数目,使得取指令操作所需内存访问数量达到最小化。此外CISC可以简化编译器结构。

RISC和CISC是目前设计制造微处理器的两种典型技术,虽然都是试图在体系结构、操作运行、软件硬件、编译时间以及运行时间等诸多因素中达到某种平衡,以求达到高效目的,但是采用的方法不同,在很多方面依旧存在较大差异,本CPU选择采用RISC_CPU主要原因如下:

  1. 指令系统:RISC专注于常用指令的设计上,使得常用指令具有简单高效的特点,在处理日常任务时相较于CISC更优秀。
  2. 中断:RISC_CPU能在指令执行到适当地方则进行响应中断,而CISC则需要等待指令执行结束才能响应中断。
  3. 设计周期:RISC微处理器结构相较于CISC结构简单,布局紧凑,设计周期更短,容易结合最新技术。

使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用。

CPU总体架构设计

本次设计的CPU为冯.诺依曼结构,使用了16位精简指令集,内部的数据路径、寄存器、地址均是16位,对存储器可以寻址64M的存储空间。对于IO口可以寻址2的八次方的存储空间,具体结构如下图所示

数据通路设计为:

利用FPGA实现简单的CPU相关推荐

  1. 利用FPGA实现简单的sdram的读写操作

    没有什么事都是一帆风顺的,学业...让人学会了很多但是又让人难以忘怀...人生路上起起伏伏,并不是真心的付出就可以得到相同的回报,有时候可能还会恰恰相反... 好了,负面情绪就不带给大家了,博主还是来 ...

  2. 利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

    10.3  利用FPGA实现USB 2.0通信接口 10.3.1  USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实 ...

  3. js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

    1,列举对象属性的名称 <script language="javascript"> var obj=new Object(); obj.a="您好,我是田洪 ...

  4. 在html利用canvas蚂蚁,html5 利用canvas实现简单的人物走动

    最近在学习html5,其中涉及到很关键的元素canvas-画布,在网上下载了一些游戏源代码,虽然能看懂,但是想单独地针对某个功能提取出来还是有难处的,于是乎自己又上网查找了一些例子,才将超级玛丽简单的 ...

  5. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  6. Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信

    本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...

  7. Java中利用socket实现简单的服务端与客户端的通信(基础级)

    在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...

  8. DL之RNN:基于TF利用RNN实现简单的序列数据类型(DIY序列数据集)的二分类(线性序列随机序列)

    DL之RNN:基于TF利用RNN实现简单的序列数据类型(DIY序列数据集)的二分类(线性序列&随机序列) 目录 序列数据类型&输出结果 设计思路 序列数据类型&输出结果 1.t ...

  9. 利用python发送邮件_利用python实现简单的邮件发送客户端示例

    脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...

最新文章

  1. 【ACM】CODE[VS] 1215 (DFS)
  2. 说说软件开发这个职业
  3. (转)创建Windows服务(Windows Services)N种方式总结
  4. 每天一道LeetCode-----分糖果问题
  5. SQLServer权限
  6. slot多作用域 vue_vue 深度长文之slot 篇
  7. 字符串处理 —— 回文串相关 —— 求最长回文子串
  8. 遇到一个把.o文件strip后出现的奇怪问题
  9. VMware vSphere之vCenter安装
  10. php怎么输出汉字大写的时间,php汉字转首字母大写的方法是什么
  11. 程序员到项目经理:从内而外的提升(比较全面的介绍)
  12. 自定义无穷大∞的显示内容
  13. 《WF编程》系列之16 - 工作流与外部世界:生存周期事件 3.2 工作流与外部世界
  14. [转]中国著名黑客你知道多少?
  15. 手把手学会gitbub(4)
  16. Python第五周作业之选择题
  17. python交易是什么意思_py交易是什么意思 py交易是什么梗
  18. 2022深圳杯AC题思路模型分析
  19. VS Code加载 Web 视图时出错
  20. 电子发票多页合并打印在一张纸上

热门文章

  1. Word中字号和磅值的对应关系
  2. 叶胜超:跨链双雄之Cosmos(宇宙)
  3. Leetcode994腐烂的橘子(广度搜索法)
  4. 苹果编程新纪元 之 Swift
  5. 计算机应用软件用着总是闪退是什么原因
  6. 母乳储存袋和奶瓶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 助你快速搭配 Material Design 配色方案的10款Web工具
  8. 联通沃云 服务器使用点滴
  9. python声音识别歌曲_听歌识曲--用python实现一个音乐检索器的功能
  10. 【微信小程序】页面导航