CPU Designer
CPU Designer
文章目录
- CPU Designer
- 先决知识
- 引言
- 基础知识
- 数字信号与数字电路
- 开关
- 半导体与晶体管
- 寄存器与时钟信号
- 小结
- 构建数据通路(运算器)
- R 型指令格式
- R型指令的指令编码
- 例:
- R型指令包含哪些
- R 型数据通路
- add
- sub
- 其他算术逻辑功能
- I 型指令格式
- I型指令的指令编码
- 例:
- I 型指令包含哪些
- I 型数据通路
- 选择器
- 数据通路
- 实现load指令
- load指令格式
- load 的数据通路
- S 型指令格式
- S 型指令的指令编码
- S型指令的数据通路
- B型指令格式
- B型指令的数据通路
- 实现jalr 指令
- 数据通路
- J 型指令格式
- J型指令的数据通路
- U型指令格式
- U型指令的数据通路
- 构建控制器
- 题目
- 总结
先决知识
数字电路与数字逻辑设计
risc-v汇编指令
引言
计算机的发明是信息时代最恢弘最根本的起点。操作系统与CPU是其中两个非常重要的部分,是计算机软件和硬件最核心也是最重要的模块。在这部分,我们将逐步动手实现一个CPU(center process unit 中央处理器),并在设计过程中逐步领会到计算机的组成原理,认识到如何从晶体管蜕变处理器的过程。
(上图引用自UCB,后面我们引用的绝大部分图片是来源于UCB, UCB 是risc-v的发源地)中间的是Instruction Set Architecture , 指令集架构,我们正在学的risc-v正是指令集架构的一种,它们处于硬件与软件的接口、中间层。它们的上层是软件,核心就是OS (操作系统), 下层是硬件,我们将学习的CPU就是Datapath and Control (数据通路和控制器,也叫运算器和控制器),用绿色线条圈出。
以前我喜欢运算器的名字,具体设计CPU时,数据通路这个名字其实更贴切
基础知识
这部分能解释CPU的前世今生,主要在告诉你为什么,可以把这部分内容当成素养阅读,只是简单的几分钟阅读,能改变你对计算机的很多看法。没时间可以跳过这部分。
数字信号与数字电路
计算机的语言:在计算机中,只需要0与1就能表示一切数字、字符、图片等等信号。
计算机的函数:组合逻辑和时序逻辑是计算机的函数,输入01序列通过函数便能返回需要的信号
计算机的心跳:时钟信号是计算机的心跳,寄存器等时序逻辑的值都会在时钟的有效跳沿处更新
risc-v 是同步的架构,采用同一个时钟信号,而非异步(多个时钟信号)
开关
最早期的计算机是通过开关来得到0与1的值,得到计算机的语言。
在有电的情况下,开关打开,灯泡变暗,表示0,开关关闭,灯泡变亮,表示1.这里的灯泡并不是真的指计算机中用灯泡的亮与暗,这只是一种比喻,灯泡的亮表明的是计算机获取到了一个1信号,反之则获取到0信号。
通过开关的串并联,能实现简单的逻辑门电路,通过简单的逻辑门电路能构成 复杂的逻辑门电路,再通过复杂逻辑门电路就能实现组合逻辑和时序逻辑,得到计算机的函数。
在上面的图中,当A的值为1表示开关闭合。相应的非门、异或门等等都可以这样构建。
通过门电路能构建出相应的电路产生时钟信号,从而得到计算机的心跳,具体是通过那些门电路实现的与我们相关性不高,学习的意义也不大,我们只需要知道能实现即可,具体找电信、微电子的人
CPU Designer相关推荐
- Why Memory Barriers?中文翻译(上)
转载自:Why Memory Barriers?中文翻译(上) 本文是对perfbook的附录C Why Memory Barrier的翻译,希望通过对大师原文的翻译可以弥补之前译者发布的关于memo ...
- C#精髓【月儿原创】第二讲 WMI完美秀出CPU编号厂商主频百分比等全部信息
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第二讲 WMI完美秀出CPU编号厂商主频电 ...
- 如果MySQL引起CPU消耗过大,你会怎么优化?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.cnblogs.com ...
- C#封装类似任务管理器CPU使用记录图
在逛CodeProject的时候,偶然发现了一个老外写的代码,里面有一个自定义的用户控件,类似任务管理器里面CPU使用记录的图表,如下截图: 因为自己之前没有做过这样的图表,觉得很赞,所以将这个用户控 ...
- Altium Designer -- PCB布线面试题(转)
这套面试题,是N年前面试的时候遇到的,贴出来共享一下.它的回答可能不太准确,只作参考即可. 参看:PCB布线面试题(一) 1.如何处理实际布线中的一些理论冲突的问题 问:在实际布线中,很多理论是相互冲 ...
- GPIF II designer使用说明+CYUSB3014芯片基本信息介绍——英文文档学习记录
这篇文章是基于之前FX3实现FPGA与USB3.0通信的内容.本人新手,写的不好如有错误请原谅.今天来记录一下官方文档的学习. 一.基本信息讲解 1.1 GPIF II Designer和CYUSB3 ...
- 2678v3支持内存频率_你听过E5-2678 v3这款CPU吗?我用它帮朋友干了件大事!
2017年上映的3D电影<加勒比海盗5>中那些气势磅礴但细节又如此逼真的特效让广大好莱坞影迷过了一把眼瘾. 要实现这些逼真的特效,需要用到强大的计算机进行特效设计和渲染.前几天,小编一个做 ...
- cpu字长、操作系统字长和jvm中各数据类型占用的字节数关系
cpu字长是指cpu同时参与运算的二进制位数,现在主流的pc的机器字长都是64位的.机器字长直接决定着机器可寻址的虚拟空间地址大小. The word size of a computer gener ...
- Matlab Deep Network Designer APP搭建神经网络及相关函数讲解
目录 1 APP的使用 2 使用神经网络 2.1 简单例子 2.2 trainOptions 2.4 predict和classify 3 参数选择原则 4 构建网络的总原则 1 APP的使用 (1) ...
最新文章
- Apache Libcloud 0.12.3 发布
- 复杂个人信息输出程序python_练习题-修改个人信息程序
- 人工智能实践:TensorFlow笔记学习(二)—— Python语法串讲
- 《jQuery权威指南》学习笔记——第二章
- 【Linux】【服务器】 CentOS7下安装JDK详细过程步骤
- ?线程池为什么可以复用,我是蒙圈了。。。
- Linux .bin安装文件制作
- Linux 上安装 SQL Server
- 浅谈C++类(6)--复制构造函数
- 宏基因组云讲堂今晚8点开讲!第一期由刘永鑫博士主持,特邀袁军副教授分享纯生信发表ISME文章的思路...
- 前端基础-git(二):轻松搞定git创建仓库,操作仓库内容
- androidstudio引用本地maven_Maven多模块如何打包本地的jar包到war中
- NSRunLoop 概述和原理
- 用汇编的眼光看C++(之算术符重载陷阱)
- [LeetCode]小工具,统计数量,隐藏上锁的题目
- PyTorch学习—17.正则化之weight_decay与dropout
- 使用Spring框架对接Twitter(一)
- 安卓小程序——猜数字游戏
- 软件开发模型2:增量模型/螺旋模型/敏捷模型
- windows系统ping端口及利用telnet命令Ping 端口
热门文章
- Activity的启动方法
- 坚持数字革命,打造消费知名品牌
- 龙芯3A5000下最新gcc 12.1交叉编译器获取与使用
- 【历史上的今天】11 月 24 日:美国在线收购网景;太阳能光伏之父出生;HTML 2.0 发布
- 下列快捷键中能够中断python程序运行的是_例题学习
- 基于单片机的防酒驾/酒精检测系统设计(#0425)
- 使用webpack4 兼容ios8 自动添加前缀
- JDK14 新特性详解,2020-03-17 正式发布
- 2021安徽计算机二级报名时间,2021年安徽计算机二级考试时间
- mysql wow_WOW私服搭建过程小记 | 学步园