作者twotwoone (我不配)
看板ask
标题Re: [请问] 想要了解CPU 的原理和设计 要看什麽书?
时间Mon Nov 9 22:04:16 2009
※ 引述《lprsdmn (ziv)》之铭言:
: 图书馆搜寻打上CPU或处里器
: 几乎找不到我要的资料
: 我想这可能是某本书的其中一个标题
: 请问我要看哪方面的书呢?
恁爸又要冲文章数了,不用找书,我直接跟你扯。
必须先选好是什麽CPU呀。
以一般家用电脑的CPU来说 (简称x86),要懂他的原理,就要学他的语言:x86 指令集
不只知道怎麽用,还要知道怎麽来。
首先就是,原本写在纸上的语言文字怎样数位化 (数字化) 变成一连串的数字?
这就叫做编码、解码,常见的就是英文字母编成的 ASCII 码。
编码後将这些数字存入硬碟,进而在电子电路上流通,送给CPU去解读数字的本意。
然後人类为了要跟CPU能够对话、能够操纵他,而设计出CPU的语言,也就是指令集。
所谓指令集,就是指令的集合,x86有加法的指令add、有减法的指令sub...
其他CPU未必会有减法的指令sub,因为利用二的补数代表负数的话,就只需要加法指令add即可。
把x86存在的这些指令全部聚集起来,就叫x86指令集。
因为硬体的设计规格,由 x86 指令集构成的程式码们,都会先放到主记忆体去排成直线
一个位置就是一个记忆体位置。
位置宽度是订成 1 Byte,有1024个位置 (0~1023) 就是有 1KB。
电脑开机後,首先会到主机板上一块记忆区域,取出一段叫做BIOS的程式码到主记忆体去
再由这BIOS的程式码第一行开始执行。
BIOS跑完後会到使用者设定的装置,比如硬碟去抓取作业系统的程式码。
CPU 在电脑通电後,其实是到「暂存器」中叫做程式计数器 (program counter) 那里
去抓出一个记忆体位置来,然後 CPU 再命令主记忆体把这个位置的资料吐出「一个指令」
来给CPU阅读。换言之,最简单、原始的CPU一次会处理一个指令。
处理完某指令後,只要该指令没有命令CPU更改PC值的话,那CPU就会自动累加PC值
(程式计数器值)
因此CPU永远、随时随地都会有处理不完的指令直到电源关闭。
预设的记忆体位置呢,就是BIOS载入主记忆体後的第一行程式码所在。
当读完指令後,CPU有一个电路装置叫做控制单元,这个单元就专门出一张嘴
在分配任务用的。
他事先就大家说好一个指令大小是 32 个位元,也就是 32 个二进位0101数字。
若3个位元是 000 时,就代表指令 add;如果是 001 就代表指令是 sub。
这也是一种编码,实际上当然不是只用三个位元来代表指令意义。因为如果这样的话
x86 指令集就被限制成只有 000~111 这 8 种而已。
如果控制单元判断目前的指令是比如 jump 到某位置,那他就叫大家都不
要乱动,直接更改PC值,然後等主记忆体继续吐出下个指令。
如果他判断出目前的指令是 add ax,3 也就是把 x86 CPU 上的某颗叫ax的暂存器加3
那他就会一边命令ax暂存器吐出他的值给ALU的输入端1,一边又丢3给ALU的输入端2。
(ALU的作用参考上上篇,ALU原理的话就数位逻辑、数位系统;
更底层、更现实的电路原理要读电子电路、电子学、物理)
简单来说ALU是个蠢货,只会加减乘除、逻辑运算,但是听不懂人话,只会乖乖做事而已。
然後控制单元这嘴炮王等到ALU把结果算出来後,继续嘴炮的命令电路把结果写回ax暂存器
再命令PC值自己递增,然後等主记忆体把下个指令送进来。
简单来说你学 x86 指令集:
http://home.comcast.net/~fbui/intel.html 这个语言,
就是要跟控制单元对话,所以你要知道 x86 有哪些暂存器,大小分别有多少,知道
控制单元叫别人做加法时,顶多有哪几种变化。不然你乱扯一句他根本做不到的事
也就是乱写一个指令给CPU时,根本就强人所难。
当你学会这个语言,也就大致了解CPU的底细跟原理...也只是这颗CPU而已,换一颗
讲外语的、用不同指令集的,你就要重学一个语言。
资工所入学考试的计算机组织圣经本,也就是白算盘,基本上是讲MIPS指令集,
这个指令集比起x86算比较简洁,所以比较适合学术教学。
x86被认为先天不良,原本的设计不够好,但後来又很受欢迎卖很好,
Intel跟AMD不愿意砍掉重练 (代价太大),所以在原本基础上去改良它,使得
要搞懂x86原理比较难。
还好,後来有个家伙叫 compiler 他很擅长把「人话」转成各种CPU的各种指令集,
所以没事就不太需要去懂 CPU 的指令集 (组合语言)。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.137.241
1F:推 banqhsia:M了XDDD 11/09 22:06
2F:推 newacc:专业推 11/09 22:06
3F:→ newacc:才刚想这篇该M的说XDD 11/09 22:06
4F:推 spfy:我以为这里是问版(茫 11/09 22:10
5F:→ killo2024:需要看书的话 试试搜寻 "微算机"原理与应用 之类的 11/09 22:10
6F:→ beagle:居然 m 了... 而且这篇居然值 762 元... 11/09 22:23
7F:→ madoka82:呜呜... PowerPC 被屏除在家用电脑的外面了... 11/09 22:29
8F:→ madoka82:Apple 贾不死 哭哭 Q<>Q 11/09 22:29
9F:推 hsinyeh:Apple也开始用x86架构了...自找的 11/09 22:36
10F:推 l00cmLP:简单说:CPU=ALU+CU+暂存器 11/09 22:47
11F:推 jackchen1025:专业到看不懂!! 11/09 23:28
12F:推 kigiron:专业好懂一定要推 XD 11/11 02:52