CPU具体是如何工作的?
工作多年的资深程序员也未必说得清楚,即便是汇编高手也不一定能准确描述,大部分人对这些几乎没有兴趣,照样能写出优秀的程序。
作为一个学生时代就开始对电子电路发生兴趣的爱好者,模拟电路自然很好理解,也很形象,比如一个波形经过放大,变成电压更高的相同的波形,比如发光二极管加上一个正向电压就会发光......可是,一旦接触到数字电路,这些东西都排不上了用场,有种不会外语的中国人到了外国的感觉。
数字电路接触多了,大概也理解了一些皮毛,不过是输入一个高或低的电平,输出一个高或低的电平,这些规则是设计好的(程序),这些与非或门就是最原始最纯朴的CPU,而这些程序是固化的,焊接上去就那个样子的,你输入一串脉冲,它就按照规则输出一串脉冲,如此这般。
后来,接触了编程,先学了高级语言VB、VB.net,再浏览过几本C语言,瞻仰了一下汇编语言,不明觉历啊!时间长了,感觉也就那么回事,没什么深奥的,只要下功夫研究,完全可以成为一个合格的程序员,就这么感觉着突然就少了兴趣,唉,人就是这么及安!
许多年来,对数字电路到程序之间的联络,一直处于糊涂一盆的状态,苦于没有名师指点,也缺乏这方面的资料,顿时感到那些所谓讲师都是书呆子,我坚信他们可以照本宣科地把汇编指令倒背如流,却讲不明白CPU内部那些神奇的脉冲是如何跳跃的,这是我所关心的,我想也是很多人关心的。
下面,就按我的个人傻瓜式的理解描述一下我认为的CPU工作原理,太雷人,游客请止步,防止触电身亡!
先说内存,内存就像一张方格信纸,每行多个列,共有多上行都是固定的。这张方格纸被划了几个区域,分别存放不同性质的数据。内存又像一块黑板,所有的演算过程都要在黑板上进行。
举个例子,老师在黑板上讲课,学生问:“1+1=?”,老师拿起粉笔(CPU的指针),在黑板上写下了“1+1=” ,相当于在方格纸上占了4个格(事实上不是那么少,先不管它),众所周知,CPU是靠程序发出指令的,所以这时候程序员的指令必定是要求CPU进行加法运算,假设这个等号就是要求运算的指令,那么“1+1”这个算式就会被CPU编译成10010100101100010001110001......这样的二进制机器码送进CPU内部的加法器,然后输出一串011101010010011100101......之类的结果,结果放在哪里呢,自然是写在黑板上,同理,放在方格纸的指定位置(这个位置必须是闲置的,不然会将原来的格子里的数据擦除,带来不可知的后果)。于是就完成了计算的过程。
如果觉得还是难以理解,那我举个更浅显的例子。以前给火锅店修理过一台羊肉切片机,这种机器是通过调整切刀的间隙达到调整羊肉片的厚薄的,这里的羊肉就代表需要运算的数据,间隙的大小就代表逻辑算法,如果切刀间隙是固定的,那么你放进去一斤羊肉,会切出5盘肉片(老板好黑!),同理放进两斤羊肉就出出10盘肉片。这里的羊肉、肉片都是要占用空间的(内存),羊肉片端出去上桌(输出),内存的数据就完成了任务。
按照这样似是而非的逻辑,发挥我胡思乱想的特长,CPU内部世界林立着几亿个二极管,这些二极管组成了各种各样的逻辑电路,随时等待着羊肉的到来,在迅雷不及掩耳盗铃的时间内切出了一盘一盘的羊肉片,羊肉丝,羊肉块,羊肉丁......
这是最简单的一个运算,而程序往往十分复杂和冗长,CPU像一个不知疲倦的工人,时刻等着下一条指令。回到刚才方格纸那个思路上来,所有的程序代码必须在内存上进行存放才能进入CPU进行运算,运算后的结果也必须写在内存里,这就像老师不能把1+1的结果“2”放在心里一样,他必须写在黑板上。
CPU在内存这张方格纸上读取和写入数据的时候,并不像我们写文章从左到右,从上到下一个字一个字,一行一行地写,而是随时进行跳转,神经病一样,它可能走着走着突然就跳走了,然后又突然跳回来,它的节奏永远是那么齐整,他跳一百米和一米的时间是一样的,不可思议吧!
这就是我所理解的CPU底层工作的状态,不管你懂不懂,反正我是似懂非懂。至于如何将结果送到显示器,如何将鼠标键盘的数据送进来,这不属于最底层,不是今天学习的笔记。这些东西相对还是容易理解的,至少我真的略知一二。
关键字:CPU 资深程序员 模拟电路
引用地址:
关于CPU的胡言乱语
推荐阅读最新更新时间:2024-03-16 14:02
试图替换西方技术,俄罗斯CPU公司宣布破产
T-Platforms 是一家俄罗斯公司,该公司曾计划建造一台 Exascale 超级计算机和国产 CPU,但由于该公司的资产成本低于其债务,于是他们在本周宣布破产。T-Platforms 是俄罗斯为数不多的可以制造世界级高性能超级计算机的公司之一。破产的主要原因不是西方国家的制裁,而是俄罗斯试图用自己的技术取代西方技术。 T-Platforms 成立于 2002 年,旨在构建能够与 IBM 和 HP 等公司的产品竞争的服务器和超级计算机。多年来,T-Platforms 基于 AMD Opteron、Intel Xeon 和 Nvidia Tesla 处理器开发了一些俄罗斯性能最高的超级计算机。例如,该公司的 Lomonoso
[半导体设计/制造]
OK6410A 开发板 (八) 67 linux-5.11 OK6410A linux 内核同步机制 per-cpu的实现
解决的问题是什么 SMP 引起的竞态 // 其实是避开了 SMP的竞态 , 因为 每个cpu 一个同名变量,SMP间根本不会有竞态发生 不能解决 其他原因 引起的竞态 其他要点 在 CONFIG_SMP 下才有意义, 不配置 CONFIG_SMP 也能用,但是就失去了他的意义(作用,) // 没有SMP,SMP引起的竞态根本就不存在了 // 而 per-cpu 就是 因为 SMP引起的竞态 才被设计出来的 在某些体系结构上,per-CPU变量可使用的地址空间是受限的,要尽量保持这些变量比较小 // 在 arm 上好像没限制 per-cpu 并没有利用 同步原语 和 屏障,因为 per-cpu的实现 是 避
[单片机]
瑞萨科技发布与DrMOS相兼容的MOSFET
株式会社瑞萨科技(以下简称瑞萨)宣布推出R2J20653ANP,一款适用于笔记本电脑用CPU及存储器等器件中稳压器(VR)的Integrated Driver-MOSFET。它符合Integrated Driver-MOSFET (DrMOS)标准,并具有支持高达27V电压的高电压容限,具有业界最高、达到91%的高电源效率(当输入电压为20V时,输出电压为1.1V)。该产品已于2009年12月7日起投入量产。 Integrated Driver-MOSFET (DrMOS)是英特尔公司提出的半导体器件标准封装形式。*1在一个单独的封装中,集成了一个DrMOS、两种类型CPU电源所需的MOSFET等器件,以及驱动器IC
[电源管理]
魏少军释疑“CPU漏洞门”,大多数人都太乐观了!
“CPU漏洞门”事件爆发以来,社会的关注不断扩大,其核心问题已经不仅是几家公司是否存在“不做为”嫌疑,而是关系到现代社会对于信息安全的保障。集成电路产业在其中应当承担起应有的社会责任。 近年来,中国大力发展集成电路产业,目的之一就是确保国家信息的安全可控。借鉴这一事件,中国的CPU企业在发展过程中,应当如何避免类似的事件发生?《中国电子报》采访了清华大学微电子研究所所长魏少军教授。 漏洞影响将长期存在,目前态度仍过于乐观 记者:“CPU漏洞门”事件不断扩大。有观点认为,此事件已经堪比十几年前IT业界遭遇的“千年虫”危机。对此事件,你如何评价? 魏少军:此次发生的“CPU漏洞门”事件涉及的两个漏洞“熔断(Melt
[嵌入式]
JTAG error:can not read register while CPU is running
前言 本博文的代码用STM32CubeMX生成,MDK调试。 出现这个问题可能不止一种,所以下面我只列举几个解决办法,后续遇到问题再添加; 如有不足,多多指教; 解决办法 https://blog.csdn.net/a379039233/article/details/73742325 打开魔法棒,重新选择调试方式
[单片机]
嵌入式汽车数字仪表设计
1 引言 汽车仪表是驾驶员与汽车的信息交流界面,对汽车安全以及经济行驶具有重要作用。近年来,随着汽车电子技术的发展,汽车仪表显示信息也不断增加,而传统机械指针式汽车组合仪表则无法满足现在使用需求。特别是计算机、微电子和各种现场总线通信技术广泛运用,以嵌入式微处理器为核心的智能化数字式仪表将是汽车仪表发展的必然趋势。本文给出一种嵌入式汽车数字仪表设计方案。
2 硬件设计 汽车仪表需要处理的信号主要有:车速、发动机转速、水温、油量、以及各种开关量或报警信号。其中,发动机转速信号和前后灯信号是从CAN总线(发动机电控模块和前后灯电控模块)获取,而车速信号、水温、油量和其他开关量信号从相应的传感器获取。 汽车数字仪表系统结构如图1
[嵌入式]
英特尔将发布下一代CPU架构?
集微网消息,近日英特尔对全球几家技术媒体发出了邀请,将于12月11日在硅谷举行“Intel Architectural Day”,一些媒体最近曝光了邀请函,从中不难发现此次会议的核心,或将是英特尔下一代架构战略。英特尔在邀请函上表示,“看英特尔的创新将如何带来新产品和体验的突破。” 根据曝光的活动邀请函,是一个发光的放大镜,或许暗示这些会议将是英特尔下一代CPU架构的潜望,活动当天下午则是高级客户端产品的突破以及数据中心体系架构和技术创新方面的内容。有消息称英特尔准备再以改进的14nm制造打造Comet Lake-S架构,同时核心数量将提升至10核心的新一代Core i系列处理器。此外,英特尔首款10nm处理器(消费市场)
[手机便携]
大电流便携式DC/DC变换中MOSFET功耗的计算
引言 众所周知,今天的便携式电源设计者所面临的最严峻挑战就是为当今的高性能CPU提供电源。近年来,内核CPU所需的电源电流每两年就翻一番,即便携式内核CPU电源电流需求会高达40A之大,而电压在0.9V和1.75V之间。事实上,尽管电流需求在稳步增长,而留给电源的空间却并没有增加,这个现实已达到甚至超出了在热设计方面的极限。 对于如此大电流的电源,通常将其分割为两个或多相,即每一相提供15A到25A,例如,将一个40A电源变成了两个20A电源。虽然可以使元器件的选择更容易,但是并没有额外增加板上或环境空间,对于减轻热设计的工作基本上没有多大帮助。这是因为在设计大电流电源时,MOSFET是最难确定的器件。这一点在笔记本电脑中尤
[电源管理]