文章目录

  • 前言
  • 一 CPU的基本组成
  • 二 CPU的基石
  • 三 ALU(运算器)
    • 1.二进制
      • (1)二进制在计算机中
      • (2)为什么是二进制
    • 2.布尔代数 & 逻辑门
      • (1)什么是布尔代数
      • (2)基本逻辑门
  • 四 寄存器
    • 1.锁存器
    • 2.矩阵
  • 五 时钟
  • 最后

前言

这篇文章的目的是以最简单的方法讲解CPU的结构,
带你感受关于CPU的智慧和魅力。
大部分图片来自Crash老师的计算机科学速成课。

一 CPU的基本组成

CPU即中央处理器(central processing unit)是计算机系统的运算和控制核心
让我们来看看它的主要组成结构吧。

ALU(算术逻辑单元): 是能够进行算术运算逻辑运算的组合逻辑电路。
寄存器(随机存取存储器):也叫主存,是与CPU直接交换数据的内部存储器。
控制器:把内存上的指令、数据等读入寄存器。
时钟:负责管理CPU的节奏(频率)。

二 CPU的基石

大家应该都知道晶体管是CPU的基石,但你知道么?其实晶体管还有两位“老前辈”,继电器热电子管曾经发挥着它的作用。
1.继电器
让我们把继电器简化一下。

控制电路上有一个线圈,当我们给它通电时线圈会产生吸力,将机械继电器关上。从而实现了 关/开 这两种状态。这两种状态就可以和二进制联系起来从而表示数据了。(关于为什么能表示数据后面二进制会讲)

但是继电器不断的动就一定会产生磨损,需要经常更换。
于是科学家们发明了不需要动的热电子管。

2.热电子管:它是一个真空管。
我们把它也简化一下

真空管中含有两个电极,一个电极会发热射出电子,另一个带正电的电极会吸引电子从而形成电流。中间设置了一个控制电路来开关。

热电子管是不需要动了,但是它就像灯泡一样,一直发热肯定会烧坏。
而且非常容易碎,于是晶体管就出场了。

3.晶体管
简化一下它的结构。
半导体指常温下导电性能介于导体与绝缘体之间的材料,通过门电路我们就可以控制它的导电性,而且半导体的能耗低,导电性转换的很,因此一直使用到现在。

下面我们会讲计算机的算数大脑(ALU),关于为什么 关/开 能代表数据,也会在下面的部分讲解。

三 ALU(运算器)

1.二进制

(1)二进制在计算机中

上面的部分我们已经提到了,晶体管可以有开关两种状态,这时我们就可以将开对应1,关对应0 。正好可以利用我们学过的二进制。

电路合上电流,代表‘
电路打开电流,代表‘

(2)为什么是二进制

第一点:只有两种状态,便于区分信号,不容易受外界干扰。
第二点:当时数学上二进制已经能够完成所以的计算。

2.布尔代数 & 逻辑门

(1)什么是布尔代数

常规代数中,变量是数字,利用数字进行‘+’ ‘-’
布尔代数中,变量是true和false,利用这两个进行逻辑操作

(2)基本逻辑门

AND门 NOT门 OR门 XOR
两个true才是true 输出相反 一个true即为true 一真一假才能输出true

以NOT门为例,我们看一下大致的情况是怎样的
当输入为ON ,接地,输出为OFF
当输入为OFF,不接地,输出为ON

ALU也可以进行逻辑运算,如两个数相减,通过逻辑门的组成可以判断结果的正负从而判断两个数的大小,这里就不再叙述。

四 寄存器

1.锁存器

数据是可以就行计算了,但是计算之后的数怎样进行存储呢?
让我们看一个简化的电路。
通过分析我们可以看出来,当下面的数变成1之后,不管输入什么值,都输出1
这是能存储1的单元

这种方式就好像是把1锁在里面一样,因此叫做“锁存器

但是通过这种方法,只能存储1位数,那么将八个锁存器并排连起来,不就可以存储8位数了么。这就是8位寄存器

2.矩阵

但是8位也还是太少了,怎样排列可以更省线,更方便呢?
科学家们开始利用矩阵构成网络。
16 * 16的寄存器就变成了256位寄存器

五 时钟

时钟以准确的间隔,触发电信号,CPU用这个信号,推进CPU的内部操作。

CPU取指令->解码->执行的速度叫“时钟速度”

很多现代处理器可以按需求 加快或减慢时钟速度
这叫“动态调整频率

超频可以提高CPU的速度.
降频可以减少能耗.

最后

✨原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

带你从零开始设计一个简单CPU相关推荐

  1. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  2. 从零开始设计一个IT系统

    从零开始设计一个IT系统是件让人头痛的事,让我们来看一个实际的例子:由Cunard Line耗资8亿美元造的Queen Mary 2号油轮上各种豪华设施一应俱全,最多能同时容纳2600位乘客.假设 & ...

  3. mfc 窗体不可点击的原因_如何设计一个简单的Access登录窗体(2)

    书接上回~ 上回书中提到了如何从零开始设计一个Access的窗体.经过简单的操作,我们已经造出了一个登录窗体,但是这个窗体是空白的,需要向其中增加一些元素,以增加登录窗体的功能性. 因此,接下来我们要 ...

  4. 子窗体 记录选择_如何设计一个简单的Access登录窗体(1)

    Access是一个对数据库新手相当友好的软件. Access的窗体功能确实是一种独一无二的前端设计平台,很多常见的人机交互用法,可以用Access的窗体来轻松实现,同时Access的查询和计算功能,也 ...

  5. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

  6. linux logo程序设计,教你在线设计一个简单美观的LOGO

    当你配置好Linux服务器并上传网站程序到服务器上,直到架设网站成功,你可能需要一个美观的LOGO,如果你对LOGO的要求不高,可以在线自己设计一个,因为网站发展初期,你没有什么资金,请不了专业的美化 ...

  7. access 知乎 窗体_如何设计一个简单的Access登录窗体(1)

    Access是一个对数据库新手相当友好的软件. Access的窗体功能确实是一种独一无二的前端设计平台,很多常见的人机交互用法,可以用Access的窗体来轻松实现,同时Access的查询和计算功能,也 ...

  8. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  9. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

最新文章

  1. linux进程间通信:POSIX 共享内存
  2. C# 2进制、8进制、10进制、16进制...各种进制间的轻松转换
  3. 让织梦内容页arclist标签的当前文章标题加亮显示
  4. win10双屏让任务栏显示不相同的方法
  5. 全渠道java b2b b2c o2o平台
  6. python求超级素数代码_C语言求超级素数
  7. 2018.5.28 PSOC第一枪:基于cypress的蓝牙开发
  8. oracle链接池满了怎么办,Oracle连接数满了
  9. linux fish颜色配置,如何在 Linux 中安装、配置和使用 Fish Shell?
  10. 数据结构之二叉树--转载
  11. 3分钟看懂 Linux 磁盘划分
  12. 十字链表法和邻接多重表法
  13. ubuntu系统鼠标右键没有新建文档的解决方案
  14. FH Admin fhadmn 源码项目下载获取 Java后台 springmvc mybatis SSM
  15. 【数据结构与算法】之深入解析RSA加密算法的实现原理
  16. 嵌入式操作系统风云录:历史演进与物联网未来第2章 Chapter2
  17. 什么是时间序列数据?
  18. maven安装到私服和从私服下载
  19. [20150901]提示USE_CONCAT.txt
  20. 黑帽SEO主要作弊方法

热门文章

  1. 网络测试工具——iperf3详细使用说明
  2. Python版本选择问题
  3. centos读取txt文件显示乱码问题解决方法
  4. c语言标识符与关键字的关系,C语言关键字与标识符
  5. 输出Python解释器路径
  6. 亚马逊asin关键词排名追踪_亚马逊卖家如何快速提升关键词的排名
  7. Git的概念、安装、使用和GitHub
  8. java.lang.IllegalStateException问题解决
  9. Python办公自动化
  10. 【Mathorcup杯大数据挑战赛复赛 A题 二手车估价】复赛思路及Python实现