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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CMS 是什么?企业应该如何选择适合自己的 CMS?
CMS 作为企业一个非常重要的信息化工具,在我所服务的中大型企业中是一个一定要用的系统,而中小企业对 CMS 并不了解,也不怎么使用。这也间接导致人们对 CMS 的理解产生较大误差,有的人觉得 Excel 就可以管理,有的人以为 ERP 就可以完全包含 CMS 工作,有的人甚至觉得 CMS 是一个鸡肋系统,日常工作中完全不需要。我可以很负责的告诉大家,无论你是职场新人,还是高端人士,CMS 一定是未来 10 年企业数字化转型中最重要的板块之一,CMS 所带来的数字化工作流程,数字化内容运营思想,以及高效工作都是企业提升市场竞争力的重要利器。
KATSU
2024/01/02
6480
CMS 是什么?企业应该如何选择适合自己的 CMS?
云原生技术社区简介
云原生技术社区是一个聚焦于云原生技术的开发、推广和实践的组织,由一群热衷于容器技术、微服务、服务网格、持续集成/持续部署、云原生存储和网络等技术的专家、爱好者和企业组成。在以下内容中,我们将深入了解云原生技术社区的各个方面。
猫头虎
2024/04/07
2180
云原生技术社区简介
本地服务器部署Apache Answer打造属于自己的高效问答平台攻略
相信很多人都有过这样的经历:当你遇到一个难题时,多希望能有一个平台可以快速找到答案;或者你有一些独到的知识和见解想要与他人交流分享,却苦于没有合适的渠道。今天,我要给大家介绍一种解决方案——如何用 Apache Answer 搭建属于自己的问答社区,并且通过 Cpolar 内网穿透技术将其展示给全球的用户。
YY的秘密代码小屋
2025/01/03
1790
本地服务器部署Apache Answer打造属于自己的高效问答平台攻略
【微前端】微前端——功能团队中缺失的一块拼图
在任何合法的前端开发团队中,提高可扩展性和敏捷性很少会成为头等大事。在处理大型、复杂的产品时,如何确保快速、频繁地交付同时包含后端和前端的功能?像后端那样将前端单体分解成许多更小的部分似乎是答案。如果执行得当,微前端可以提高团队的有效性和效率。就是这样。 微前端背后的想法是将网站或 Web 应用程序视为由独立团队拥有的功能的组合。每个团队都有自己关心和擅长的不同业务领域或任务。团队是跨职能的,从数据库到用户界面,端到端地开发其功能。 将较大的问题分解为较小的问题以提高敏捷性、可重用性和可扩展性一直是 IT
架构师研究会
2022/03/08
9810
14.1k Star 的爆款开源知识管理神器!5 分钟搭建高颜值问答社区!
你是否遇到过这样的困扰:团队内部知识分散在聊天记录、文档和邮件中,每次查找信息都像大海捞针?或是想搭建一个专属问答社区,却被复杂的开发流程和高昂成本劝退?
永恒君
2025/04/10
1240
14.1k Star 的爆款开源知识管理神器!5 分钟搭建高颜值问答社区!
2024十大JavaScript库
在如此众多的 JavaScript 库中,选择合适的库可能令人望而生畏。以下是我们在 2024 年的最佳选择。
云云众生s
2024/06/20
2030
这7款开源的工单系统你知道几个?
今天波哥收集整理了7款开源工单系统,进行了详细介绍和对比,文末给出他们的官网和开源代码库。有需要的朋友欢迎、收藏、转发、分享。
IT运维技术圈
2023/09/07
9.1K0
这7款开源的工单系统你知道几个?
数字世界的守护者:2023年最佳网络监控工具大揭秘
网络监控工具在今天的互联网时代扮演着至关重要的角色。随着数字化转型的不断发展,企业和组织需要强大的网络监控工具,以确保网络的可用性、性能和安全。本文将介绍2023年最佳的网络监控工具和软件,包括Auvik、Paessler PRTG Network Monitor和SolarWinds Network Performance Monitor等。我们将探讨它们的主要功能、优点和缺点,以帮助您选择适合您需求的最佳工具。
网络技术联盟站
2023/11/21
7110
数字世界的守护者:2023年最佳网络监控工具大揭秘
『GitHub项目圈选21』推荐5款本周 标星优秀 的AI开源项目
open-webui 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。
Python兴趣圈
2024/04/13
1.1K0
『GitHub项目圈选21』推荐5款本周 标星优秀 的AI开源项目
MassCMS VS WorldPress比较
WordPress是一个基于PHP的内容管理系统 (CMS),可让您创建博客、网站或 Web 应用程序。WordPress 是全球数百万开发人员使用的开源耦合类型内容管理系统 CMS。与其他解决方案相比,使用和维护它的人数占 CMS 使用量的 43% 以上。
KATSU
2023/10/13
6860
MassCMS VS WorldPress比较
dlvm-netcore 开源框架
DLVM 是一个集数据库、逻辑、视图及模型为一体的并涵盖了常用基础套件,以 NetCore 为主的底层框架。具备安全性、可扩展性、可配置性及可视化操作等优点,并且具有一键创建模块的功能。 DM 平台,不仅仅是一个后台开发框架,他也是一个企业级快速开发解决方案。只用拖拉和编写一些简单的 JavaScript 即可实现业务功能创建和复杂的逻辑关系,能让初学者更快的入门并投入到团队的项目开发中去。让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。 主要功能包括如:实体设计、表单设计、视图管理、单据体管理、插件管理、审批流设计、业务流设计、报表管理、组织机构、角色用户、菜单管理、功能权限、数据权限、系统参数等。采用松耦合设计,模块增减便捷。界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线上传预览;消息推送;支持多数据源;支持前后分离、分库分表;支持微服务应用。 DM 平台发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,架构精良、易于扩展、可配置性强、操作可视化的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少软件公司在短期内完成项目的开发并交付使用,客户反响良好并快速得到回报。 DM 平台是作者和自己的开发团队结合了多年开发经验,以及各方面的应用案例,把多个开源框架的优势和特殊功能集中进行优中选优,进行了二次开发后,完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有了与众不同、独竖一帜的表现。努力为大中小微企业打造全方位企业级快速开发解决方案。
DM创新
2022/06/13
5110
OpenShift 与 Kubernetes的关键区别
在快速发展的 DevOps 和云原生应用程序领域,容器编排已成为管理和部署可扩展应用程序的关键组件。该领域的两个主要参与者是 OpenShift 和 Kubernetes。但它们有何不同?您应该为您的组织选择哪一个?让我们深入了解这两个平台的复杂性,以帮助您做出明智的决定。
用户5166556
2024/06/11
2770
OpenShift 与 Kubernetes的关键区别
Sherlock:社交媒体账号搜索工具 | 开源日报 No.111
这个项目是一个社交媒体账号搜索工具,名为 Sherlock。它可以通过用户名在不同的社交网络上追踪用户的账号。
小柒
2023/12/13
3810
Sherlock:社交媒体账号搜索工具 | 开源日报 No.111
停止过度设计中等规模的前端应用程序
开发一个小型应用程序很简单。另一方面,开发大规模应用程序极其困难,但至少有大量可用的资源可以指导你。
前端小智@大迁世界
2023/08/16
2980
使用DeepSeek搭建个人知识库
对于想要在本地或自托管环境中运行 LLM 的用户而言,Ollama 提供了一个无需 GPU、在 CPU 环境也可高效完成推理的轻量化 “本地推理” 方案。而要让 Ollama 真正 “接地气”,往往需要与其他开源项目进行配合——例如将文档、数据源或应用前端与 Ollama 打通,这便衍生出许多解决方案。
lyushine
2025/04/02
2080
从零快速开发管理系统
现在的程序开发人员大部分都不会自己去从零开发一个系统了,基本都是在使用一些免费的框架或破解一些有用的功能来自己二次开发组合使用,一般要达到要求是几个框架的功能组合才能实现。
DLVM_netcore
2022/05/17
3620
从零快速开发管理系统
现在的程序开发人员大部分都不会自己去从零开发一个系统了,基本都是在使用一些免费的框架或破解一些有用的功能来自己二次开发组合使用,一般要达到要求是几个框架的功能组合才能实现。 程序开发人员都想找到一个快速开发框架,网络上的框架也有很多。一般都是静态页面的居多并没有后台功能及代码,有些有代码的也十分简单或复杂不能很容易的扩展,想找到一个完美的权限分配功能并能和您创建的功能模块及操作按钮对应的框架就更难了。 如果你想找到一个自带完美权限管理,不用写后台代码。并想只用拖拉和前台 js+Sql 代码结合实能实现业务功能创建和复杂的逻辑关系的框架;框架的开发语言是 C#, 要求跨平台,要求开源,支持多数据库,今天给大家推荐下 DLVM 开发平台吧,简称 DM 平台。
DM创新
2022/08/24
4120
想知道Tableau适不适合你?以下10点助你一臂之力
译者注:文章源址:https://blog.openbridge.com/is-tableau-right-for-you-10-point-checklist-to-make-the-right-decision-e43dbf9c63fd
p@ssw0rd
2018/06/07
5.4K1
想知道Tableau适不适合你?以下10点助你一臂之力
.NET Core/.NET5/.NET6 开源项目汇总5:(权限)管理系统项目
企业管理系统一般包含后台管理UI、组织机构管理、权限管理、日志、数据访问、表单、工作流等常用必备功能。下面收集的几款优秀开源的管理系统,值得大家入门学习。如有新的优秀项目,我会不断补充。
张传宁IT讲堂
2021/06/29
4.5K0
分享10个优质的Java练手项目
最近有很多小伙伴私信我说推荐几个毕设项目,在这里我收集了10个可以直接导入运行的项目。
HaC
2021/01/17
3.1K0
相关推荐
CMS 是什么?企业应该如何选择适合自己的 CMS?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档