Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CPU怎么去执行程序的?

CPU怎么去执行程序的?

作者头像
硬核编程
发布于 2019-08-19 13:37:19
发布于 2019-08-19 13:37:19
7730
举报

从 "取指令" 开始,"指令地址寄存器" 现在的值是 1 到 "解码" 阶段! 0001 是 LOAD B 指令 从 RAM 里把一个值复制到寄存器 B,这次内存地址是 1111,十进制的 15。现在到 "执行阶段“,”控制单元" 叫 RAM 读地址 15,并配置寄存器 B 接收数据,成功,我们把值 0000 1110 ,也就是十进制的 14 存到了寄存器 B ,最后一件事是 "指令地址寄存器" +1 ,我们又完成了一个循环。

下一条指令有点不同,来取它吧 1000 0100,1000 是 ADD 指令 ,这次后面的 4 位不是 RAM 地址,而是 2 位 2 位分别代表 2 个寄存器,2 位可以表示 4 个值,所以足够表示 4 个寄存器。第一个地址是 01, 代表寄存器B ,第二个地址是 00, 代表寄存器A。因此,1000 0100,代表把寄存器 B 的值,加到寄存器 A 里 ,为了执行这个指令,我们要整合第 5 周的"控制单元" 负责选择正确的寄存器作为输入,并配置 ALU 执行正确的操作 B对于 "ADD" 指令, "控制单元" 会 启用寄存器 B,作为 ALU 的第一个输入,还启用寄存器 A,作为 ALU 的第二个输入 。之前说过,ALU 可以执行不同操作,所以控制单元必须传递 ADD 操作码告诉它要做什么 。最后,结果应该存到寄存器 A,但不能直接写入寄存器 A,这样新值会进入 ALU ,不断和自己相加,因此,控制单元用一个自己的寄存器暂时保存结果,关闭 ALU,然后把值写入正确的寄存器,这里 3+14=17,二进制是 0001 0001,现在存到了寄存器 A。和之前一样,最后一件事是把指令地址 + 1 这个循环就完成了。

好,来看最后一个指令:0100 1101,解码得知是 STORE A 指令(把寄存器 A 的值放入内存), RAM 地址 13,接下来,把地址传给,同时,打开寄存器 A 的 "允许读取" 这样就可以把寄存器 A 里的值,传给 RAM。恭喜,我们刚运行了第一个电脑程序!它从内存中加载两个值,相加,然后把结果放回内存,刚刚是我一步步来讲的,我们人工切换 CPU 的状态 "取指令→解码→执行"。

时钟

但不是每台电脑里都有一个迷你,其实是 "时钟" 来负责管理 CPU 的节奏,时钟以精确的间隔触发电信号,控制单元会用这个信号,推进 CPU 的内部操作,确保一切按步骤进行。就像罗马帆船的船头,有一个人负责按节奏的击鼓, 让所有划船的人同步... 就像节拍器一样,节奏不能太快,因为就算是电也要一定时间来传输。 "取指令→解码→执行" 的速度叫 "时钟速度",单位是赫兹 - 赫兹是用来表示频率的单位。赫兹代表一秒 1 个周期 因为我花了大概 6 分钟,给你讲了 4 条指令:读取→读取→相加→存储,所以我的时钟速度大概是 0.03 赫兹。我承认我算数不快,但哪怕有人算数很快,最多也就是一秒一次,或 1 赫兹。第一个单芯片 CPU 是 "英特尔 4004" ,1971 年发布的 4 位CPU,它的微架构很像我们之前说的CPU。虽然是第一个单芯片的处理器,但它的时钟速度达到了 740 千赫兹 - 每秒 74 万次 。你可能觉得很快,但和如今的处理器相比不值一提,一兆赫兹是 1 秒 1 百万个时钟周期,你现在看视频的电脑或手机,肯定有几千兆赫兹 , 1 秒 10 亿次时钟周期 。

动态调整频率

你可能听过有人会把计算机超频,意思是修改时钟速度,加快 CPU 的速度 。就像罗马帆船要撞另一艘船时,鼓手会加快敲鼓速度。芯片制造商经常给 CPU 留一点余地,可以接受一点超频。但超频太多会让 CPU 过热或产生乱码,因为信号跟不上时钟。你可能很少听说降频,但降频其实很有用,有时没必要让处理器全速运行,可能用户走开了,或者在跑一个性能要求较低的程序,把 CPU 的速度降下来,可以省很多电,省电对用电池的设备很重要,比如笔记本和手机。为了尽可能省电,很多现代处理器可以按需求加快或减慢时钟速度这叫 "动态调整频率" 。

加上时钟后,CPU 才是完整的。现在可以放到盒子里,变成一个独立组件。!一层新的抽象! RAM,上面说过,是在 CPU 外面的独立组件,CPU 和 RAM 之间用 "地址线" "数据线" 和 "允许读/写线" 进行通信。虽然今天我们设计的 CPU 是简化版的, 但我们提到的很多机制,依然存在于现代处理器里 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员成长充电站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CPU 操作码指令运行详解 & CPU特性讲解
在指令表中我们看到ADD指令的后四位寄存器 OR RAM地址一列中,列出来的不是之前的RAM地址而是两位的寄存器ID。两位可以表示四个数字,正好对应ABCD四个寄存器。
北洋
2023/09/21
7770
使用ALU,RAM,寄存器打造一个CPU
计算机的心脏是中央处理单元,简称“CPU” 。这篇文章就利用前几篇文章中提到过的ALU,RAM,寄存器组件做一个CPU。
小柔
2022/10/09
9500
使用ALU,RAM,寄存器打造一个CPU
CPU 是怎样工作的?[每日前端夜话0x89]
CPU,也被称为微处理器,是计算机的大脑。让我们通过深入了解计算机的核心,来帮助自己有效地编写计算机程序。
疯狂的技术宅
2019/06/28
9910
CPU 是怎样工作的?[每日前端夜话0x89]
面试官:CPU 是如何工作的?我一脸懵逼。。
CPU(中央处理器),也被称为微处理器,是计算机的心脏和/或大脑。本文让我们一起深入了解计算机的核心,以帮助我们高效地编写计算机程序。
Java技术栈
2021/07/16
1.1K0
面试官:CPU 是如何工作的?我一脸懵逼。。
CPU处理程序的三个阶段
我们已经做了一个算术逻辑单元(ALU)输入二进制,它会执行计算。我们还做了两种内存: 寄存器 - 很小的一块内存,能存一个值 ,之后我们增大做出了 ,RAM 是一大块内存,能在不同地址存大量数字,现在是时候把这些放在一起,组建计算机的 "心脏" 了。但这个 "心脏" 不会有任何包袱,比如人类情感.。计算机的心脏是"中央处理单元",简称 "CPU" 。CPU 负责执行程序,比如 Office,Safari 浏览器。程序由一个个操作组成 ,这些操作叫"指令"(Instruction) ,因为它们"指示"计算机要做什么,如果是数学指令,比如加/减 ,CPU 会让 ALU 进行数学运算,也可能是内存指令,CPU 会和内存通信,然后读/写值,也可能是内存指令,CPU 会和内存通信,然后读/写值,CPU 里有很多组件。
硬核编程
2019/08/19
1.2K0
CPU 是如何执行代码指令的?
现在我们拿到了指令,前四位是操作码对应的是指令表中的LOAD A指令。对应的描述是将RAM的值放入寄存器A
北洋
2023/09/21
5160
从计组角度去看如何优化指令执行流程及线程进程区别
上一篇文章中我们做了一个除法的程序,其实现原理是不断使用减法当检测到0或者负数时停止。但是这种方式需要很多个时钟周期才能完成(13个周期,每次发一个时钟周期CPU去取一次指令执行【取指令,解码,执行】),特别低效。
小柔
2022/10/09
5590
从计组角度去看如何优化指令执行流程及线程进程区别
CPU中的程序是怎么运行起来的
最近一位朋友问我,开发的代码是怎么在芯片运行起来的,我就开始给他介绍代码的预编译、汇编、编译、链接然后到一般的文件属性,再到代码运行。但是大佬问了我一句,CPU到底是怎么执行到每一个逻辑的,就讲了哈CPU的架构。这是时候真的有些迷了,虽然有模电数电的底子,但是自己都说迷糊了,汇编怎么对应到机器码再到怎么执行每一个逻辑。
用户1605515
2020/12/17
1.1K0
CPU中的程序是怎么运行起来的
什么是CPU?
当你用手机刷短视频、用电脑玩游戏,或是使用智能手表查看健康数据时,这些设备的核心“大脑”——**CPU**(中央处理器)正在默默工作。它是现代计算设备的核心,但很多人对它一知半解。今天我们就用最通俗易懂的方式,揭开CPU的神秘面纱。
秋月叶落
2025/02/25
2360
什么是CPU?
【AI系统】CPU 基础
CPU 是 Central Processing Unit(中央处理器)的简称,它负责执行指令和计算,控制着计算机的所有组件。CPU 从无到有,从弱小到强大,经历了漫长发展过程,其间发生了无数的故事。
用户11307734
2024/11/26
1620
程序员需要了解的硬核知识之CPU
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和CPU打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU
cxuan
2019/10/24
9040
【愚公系列】软考高级-架构设计师 002-中央处理单元CPU
中央处理单元(CPU,Central Processing Unit)是计算机硬件的核心部件,负责解释和执行大部分计算机指令。它是计算机的大脑,处理数据并控制计算机其他部件的操作。CPU的性能直接影响到整个系统的效率。
愚公搬代码
2024/05/07
1940
简易RISC软核CPU设计
FPGA设计中在IP核的提供方式上,通常将其分为软核、固核和硬核这3类。软核(Soft IP Core) : 软核在EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型;通常遍是指以HDL代码(Verilog,VHDL...)为形式的可综合源代码;固核(Firm IP Core) :固核在EDA 设计领域指的是带有平面规划信息的网表;硬核 (Hard IP Core) :硬核在EDA 设计领域指经过验证的设计版图。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置。软核处理器是指利用HDL语言描述的处理器功能代码,用于实现处理器的所需要的各种功能。
数字积木
2021/04/15
1.3K0
CPU 执行程序的秘密,藏在了这 15 张图里
软件用了那么多,你知道软件的 32 位和 64 位之间的区别吗?再来 32 位的操作系统可以运行在 64 位的电脑上吗?64 位的操作系统可以运行在 32 位的电脑上吗?如果不行,原因是什么?
乔戈里
2020/10/26
1.7K0
CPU 执行程序的秘密,藏在了这 15 张图里
从洗衣机的故事中理解计算机的工作原理:优化指令执行速度
CPU执行一条指令也是类似的操作:取址-》解码-》执行,不断重复。此时一条指令需要三个时钟周期才能完成(取址,解码,执行)。
北洋
2023/09/22
2870
单周期CPU
1、理解 MIPS 常用的指令系统并掌握单周期 CPU 的工作原理与逻辑功能实现。
ttony0
2022/12/26
2.4K0
单周期CPU
运维锅总详解CPU
本文从CPU简介、衡量CPU性能指标、单核及多核CPU工作流程、如何平衡 CPU 性能和防止CPU过载、为什么计算密集型任务要选择高频率CPU、超线程技术、CPU历史演进及摩尔定律等方面对CPU进行详细分析。希望对您有所帮助!
锅总
2024/07/11
2960
运维锅总详解CPU
互联网十万个为什么之什么是CPU?
CPU(中央处理器)是计算机系统的核心硬件组件,负责执行程序代码,处理数据,以及控制其他硬件设备的操作。CPU接收来自内存或输入设备的指令,然后按照指令执行运算和逻辑处理,最终输出结果。它可以看作是计算机的大脑,任何的计算任务都依赖于CPU处理。
linus_lin
2024/09/06
1950
互联网十万个为什么之什么是CPU?
CrashCourseComputerScience(1)-计算机历史及硬件
本文是在回顾Crash Course计算机系列视频的笔记,本系列课程的老师是外网有名的Carrie Anne.
打铁读书郎
2024/04/11
3030
CrashCourseComputerScience(1)-计算机历史及硬件
【愚公系列】软考中级-软件设计师 002-计算机系统知识(CPU)
学习CPU(中央处理器)的功能和组成对于理解计算机系统的工作原理非常重要。以下是学习CPU功能和组成的几个原因:
愚公搬代码
2024/01/13
3250
相关推荐
CPU 操作码指令运行详解 & CPU特性讲解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档