当前位置: 首页 > 原理解释

计算机原理考试试卷

计算机原理之血泪与顿悟
一、指令与执行:大脑的硬件在哪儿? 别跟我念“指令”这两个字,听着就肉疼。你脑子里的神经递质、突触间隙、电化学信号,它们到底在搞啥鬼?别说是“指令”,那都是现代计算机的嘴脸,是硅基生命才有的词汇。咱们得从最底层的物理现实眼里瞪眼。 那会儿学指令集架构总认定那是神一般的东西,如何一来就 CPU+RAM 就全搞定,真没头绪。
实际上啊,CPU 就是个超级复杂的处理机,但它的灵魂都在寄存器里转。当你按下那个你伟大的“启动”按钮,CPU 并没有凭空形成代码,它只是把内存里某个字节要么运存的指令,像搬运工一样,从地址 A 搬到了地址 B,再送到寄存器 C 去执行。整个过程就像个微型工厂流水线,指令只是原材料,CPU 才是那个总装工人。 大量人问:那为啥还要如此复杂?
为啥不能光靠那个叫“总线的”这根线直接传数据?这就像问“为啥不能直接把货从仓库送到门口”。总线是高速公路,但送货车还得先停在仓库门口把货卸下来,再装进货箱(寄存器),最终再上高速公路。
要是一次性全塞进总线,那信号打架,数据错乱,直接连马赛克。便,就有了寄存器,就是那个临时的中转站,专门用来存“当前正在干活”的那一段代码。
二、内存的博弈:显存与内存的恩怨 说到内存,大量人一听就甩出一堆“寄存器、缓存、显存、内存”这些术语,认定背熟了就懂了。但在我眼里,这彻底是两拨人打架。 真正的内存,也就是 RAM,是你的工作区。它的特征是速度快,但容量小,并且一旦断电,刚刚在那儿忙活的数据全没了,就像你临时借个办公室,下班就没,东西全扔了。你上次做的那个运算,下次启动了,数据就自动清空,换个人来用,就得重新跑一遍。 而显存,是那个只读只写、容量庞大、速度极快的“神兽”。它存的是程序本身,是你刚编译好的、还没来得及放进主内存的文件。显存的特征是容量大,能存几万、几十万就连上百万条指令。但它有个致命弱点:只读。你没法随意修改它,一旦断电,一切归零。 这就造成了一个尴尬的局面:程序有时候跑不动,有时候又跑崩。
既然你没法改程序,那有没有办法把常跑的程序,比如浏览器里的网页,要么那些你用了几次就忘的脚本,直接“装”到显存里? 答案是有的,但这有个前提:你得把主内存里的程序先踢开,要么把程序的一局部复制到显存,形成一个新的、独立的执行单元。在 Windows 系统里,这就是“程序集”的概念;在 Linux 里,就是“共享库”要么动态链接库。你把整个程序打包,然后只复制一段代码到显存,剩下的代码在主内存里挂着,这样你就能不用重启电脑就能持续运行了。
三、算力的瓶颈:冯·诺依曼的死结 冯·诺依曼体系结构是计算机之父的得意之作,但到了今天,它似乎成了计算机科学的“死结”。 为啥?出于它把指令和数据混在一起了。指令是“执行 A 加 B",数据是"10 加 5",它们混在一个个字节里,在总线上跑。
这就好比一个仓库,里面既有“搬箱子”的牌子(指令),又有“水果”(数据),仓库管理员得两手一摊,说“既当搬运工,又当仓库管理员,这活儿如何干?” 便,我们就有了缓存。缓存是个小盒子,专门存常用的数据。数据刷进去快,但刷不出来时,就得等;指令塞进去也慢,出于得从总线里找位置。
这就像你去拿快递,有时候你手里拿着的快递是常用的(缓存),速度快;有时候你得去仓库里找(内存),慢。没找着,还得等。 更可怕的是那个数据通路。从 CPU 到内存,再从内存到 I/O,这是一条死胡同。数据得一遍一遍地从这一条路上冲那会儿。
要是你要算个亿个亿的大数,这条线就堵死了。
这时候,你不得不依赖“流水线”来破解。 流水线就是个流水线工人。你扔了一个零件(一条指令),工人 A 启动干;下一个零件来了,工人 B 启动干;再下一个,工人 C 启动干。
只要你不暂停流水线,哪怕一个零件没干完,流水线还在转。理论上,这一个亿亿指令,只要流水线不断,就能在几秒钟内全体算出来。 但这有个致命伤:你得不断“喂”新指令进去,把旧指令“吐”出来。
这就像流水线上的工人,你不停地投料,他们才不停地干活。
要是流水线断了,一停机,刚刚算好的结局就全丢了。
这就是冯·诺依曼结构最大的弱点——它忒串行了。
四、并行与预取:让机器想开挂 既然流水线如此好用,那为啥还没出现真正的“布雷克架构”要么“异构计算”?出于还没人把这些东西好好搞懂,要么还没人的硬件赞成得好。 现代计算机都在拼命搞“预取”。
你想想,指令和数据混在一起,你根本不知道下一秒要干啥。CPU 得凭运气猜,猜对了快,猜错了慢。 预取就是让 CPU 去“扫盲”。
不管你在干啥,CPU 会提前把下一条指令、就连下一条数据,从缓存里挖出来,放到寄存器里。你只管去“读”,CPU 负责处理。它就像个超级书童,不仅给你递书,还顺便把书里的目录、简介、作者名全给你塞进脑子里。 这要是能完美做到,那速度简直恐怖。只不过目前硬件做不到“完美”,间或会出错,间或会延迟,间或会卡住。
这就是为啥高性能的服务器要那么多 IO 卡、那么多网卡。它们就像是工业时代的流水线,别看效率低,但能扛住大流量。 并且,现代 CPU 也启动搞“预取”。
比如你打开一个大型视频,程序一启动就先把这一帧的指令、那一帧的数据、下一帧的数据,全都加载到缓存里。
哪怕你只看了这一帧,CPU 也先把这一帧的后续处理逻辑预备好。
这叫“级联预取”。 这就像你去逛商场,你只看了一个商品,但商场经理知道你刚刚看了啥,故此直接把这一级商品的名字、价格、位置都写在价签上了。你不用问,系统自动帮你配好了。
五、深度思索:内存墙之外的荒原 最终,咱们得承认一个事实:目前的计算机,甭管是多核、多路、故此芯,还是各种各样的新架构,核心难题都没变。还是那条数据通路堵死了。 你当作有了那么多核,实际上是把“并行”和“串行”混成了“混乱的并行”。多核 CPU 就是几条死胡同,你只能轮流走,不能横向走。 要想彻底解决,得搞“存内计算”或“神经风格计算”。
比方说,直接把算出来的结局存回内存里,不用急着写回寄存器,让计算结局自己“动”。
要么,把 CPU 和 GPU 彻底分开。GPU 是成千上万个核,每个核都专门负责算一种特定的东西,比如像素点。它们之间通过高速互联(AXI 总线?)互相配合。 但这都需求硬件成本的突破。想象一下,要是每一块显卡都建一个独立的工厂,把算力铺开,那成本会高到无法想象。
要不就,我们能用一种新的材料、一种新的架构,让数据能像信号一样,在片上直接通过电容和电阻搞定物理传输,不用经过复杂的总线。 这就像人类还没学会用智能手机,却非要让人工智能去指挥人类的神经系统一样。目前的计算机,就是那个还在用老式打字机打字,却想让人工智能去管住它的键盘。
六、结语:在混乱中寻找秩序 回到最初的难题:指令在哪? 别找那些晦涩的计算机术语,去找你的身体。你的身体就是那台运行了上千万年、没有停过、从未宕机过的超级计算机。当你学习编程,当你看到一行代码,那不只是是一串字符,那是你的身体在通过某种介质,向你传输一个“执行”的信号。 当你按下“启动”,你的身体里的某个神经元,要么某个电路,被激活了。它执行了一个动作。它把信号传到了下一个神经元。
这整个过程,就是指令。 不要试图在教科书里找到教给你如何工作的方式。书本是死的,人是活的。你的大脑在不停地思索,你的身体在不停地执行。
这就是计算机原理的真相。它不是魔法,它只是物理规律的一种极致封装。 别被那些术语吓住了。
记住,CPU 就是个搬运工,内存就是个仓库,总线就是个路。
只要搞清楚它们各自的角色,你就掌握了计算机运行的全体秘密。剩下的,就看你愿不愿意去琢磨,能不能让那台“老式打字机”也学会思索。
相关标签:

猜你喜欢

热门阅读

  • 赖柴尔定理-赖柴尔定理
  • 迪拜哪个国家的城市?-迪拜在哪国城市
  • 李毅吧番号及出处-李毅吧番号及出处
  • 贴春联的由来简介50字-春联由来简述
  • 思乡的名言和出处-思乡名言及出处

其他分站