找回密码
 注册
关于网站域名变更的通知
查看: 318|回复: 2
打印 上一主题 下一主题

介绍一下计算机体系结构

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-15 09:37 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
引言  
9 S/ e6 ^) a  \+ M! e7 M" B: c8 G6 `( V  @2 l
阵而后战,兵法之常,运用之妙,存乎一心。) g0 Y8 y; R+ Q. v- x$ l$ [

! e+ h; p8 K, a+ K6 D先说两个概念:$ f$ m6 K$ |7 F% ?

+ k; ?2 F: e  R% r1》图灵机:说白了,一句话,就是当前状态,和输入,共同决定输出内容。这样的机器,就是图灵机。图灵,是个名人,也是个人名,在二次世界大战中在一个小区里做出了很大贡献,当然不是他一个人在战斗。
* v0 [/ j2 F8 o( k- R* a' {$ `% Q1 ~" F6 g- \, C0 Z
2》计算机体系结构(冯。诺依曼):也说白了,一句话,就是,数据和操作都放在存储器中,CPU从存储器中取操作和数据,然后进行根据操作把数据运算一下,最后把运算结果也放到存储器中。操作和数据合在一起就是一条“指令”。很多指令合在一起,就是一个指令集。在很多年前,指令集在一定程度上就代表着计算机体系结构。, D7 w2 c2 b8 s% w" b" t
. R( ^8 p. L# J/ [  J
冯。诺依曼体系结构就是图灵机的具体实现方式之一。. I/ l6 |8 d  D$ b* t% t! z' _
+ T$ }3 {1 h3 B" u
针对图灵机,举个例子,在大学的数字电路都学过的话就会发现,整个内容可以分成两类,一类是组合逻辑电路(由基本与或非门电路组成),一类是时序逻辑电路(由带反馈的门电路构成的触发器)。其实,要想有“当前状态”,就需要触发器(触发器组成寄存器),要想对输入和当前状态进行处理,就需要组合逻辑电路。组合电路和时序电路共同组成了现在的大规模集成电路,和超大规模集成电路(VLIC)。$ l# }0 \& l+ o/ I
" N7 F& p! X, r8 {5 e
针对计算机体系结构,也举个例子:. l! W- e2 K/ ?

5 ]+ q3 n- _  Q! Y1》,上世纪六七十年代,计算机体系结构,几乎就等同于ISA(指令集),这句话需要仔细体会一下。# j, \6 P* R3 t4 O# S, m

$ l6 A/ U" [" v. K4 ]* G1 Q8 w2》,上世纪八九十年代,“存储墙”导致了cache的出现,21世纪初,“功耗墙”导致了多核的出现,下一步,“带宽墙”会带来什么变革呢?
+ A% \3 q5 c" V2 K' ~: U+ W9 q% g, H- f1 [
3》,汽车刚出现的时候,追求的是汽车能跑的快,试想,如果汽车还不如马车跑得快的话,还买汽车啊。但是你看现在,追求的是油耗,是跑100公里耗几个油儿。这,就是时代的进步。
$ {2 p: v# @, o2 m# P' w8 W
& Z. u9 e& ?4 x4》还要记住一点,就是principle of entropy increase。即熵增加原理,在孤立系统中,一切不可逆过程必然朝着熵增加的方向进行。熵是什么呢,就是体系的混乱程度。计算机的工作的本质,就是把无序的事情变得有序。# ~& t8 Q& s. w! K3 `& @& h
( I3 `* \9 ~# G

4 _, ^# x" p. O) `计算机体系结构$ w9 S, o0 t9 K9 i0 c
0 _) B2 R% ?$ r/ j0 [1 e
反过头去看一下冯诺依曼体系结构,7 U: M  B4 V9 p2 O' B
9 q% G; w' e3 _7 n; F8 W
1》刚开始,要想让计算机运行的更快,就是要给CPU提供足够的操作和数据,为了提供操作(指令)就引进了转移预测技术,为了提供数据就引进了cache技术,为了提高执行速度,
& }* u+ @) v' V# Z) t6 G* t# d! B$ O: H# C
2》就有了流水线,有了流水线就有了流水线遇险(hazard)的问题,包括(RAW,WAR,WAW),
! q# L7 N& H2 `; f: [4 u. @. z. Q! t' `# e
3》为了解决RAW,就引入了直通(bypass)技术,
, O& R% k5 f) q2 C1 i1 i" @
2 t3 |" m# O% V4 P) ^6 S4》为了解决WAR和WAW,就引入了乱序执行技术,即保留站技术(tomasulo),寄存器重命名(renaming)技术,% Z# F  M) u& B- F( I0 N
* m3 L  R! W$ _7 B
5》但是乱序执行就使异常不精确(精确异常,就是异常产生时要保证,产生异常的这条指令前面的指令都执行完毕,后面的指令都没有执行,这样,异常返回后知道从哪开始执行),
0 }% G2 @5 l8 U) {; s- T* L/ B  R- {, j" y* i" G3 s& ~
6》为了实现精确异常,就引进了重排序缓存技术(ROB:reorder buffer),: J4 r& c" W( _4 q

2 r9 K0 L$ e' y9 }. P  E$ b  @自此,纵观一下,体系结构的工作就是,顺序进入,乱序执行,有序提交,这样一个过程。  s; V/ R' \- l( K
& U; F* i4 j. ?' N! b

" U# R6 Y+ {/ x' y# E% W8 V即使这样,人类还不满足,于是再增加流水线的条数,即超标量,1 L+ K$ W2 E8 K6 D6 h( Q
" m0 o7 h6 u, U1 k9 T9 _- e, a+ F/ A% i
把流水线的级数增加以提高工作平率,即超流水线。7 B* S5 V+ Z% E/ u9 l
6 E; H* I$ E; Y# C) ^0 p7 O% J7 E
以上这些,归于5个字:指令集并行(ILP)。1 a+ v- {8 u/ Y2 T* n4 |+ P7 H/ ]
% r2 e6 M% z2 K/ u% A
所以人们又开发线程级并行技术,进程级并行。所以就有了多核的CPU。当然,事情还不只这些,暗硅(dark silicon)问题,工作电压接近晶体管阈值,集成度造成的功耗问题,等等等等这些,人们就相出了很多办法,单个CPU咱们进一步有困难,咱们就把多个CPU放在一块,咱们就搞ASIC,搞FPGA,搞CPU和ASIC的混合物(heterogeneous architecture)。" b: P2 j* V8 V; {
! M! H7 ?9 c' U& Y4 Z$ o

8 Z; T4 W' m7 k% s一个小故事
" A: c) z) }/ Q* \
1 ?2 F2 X+ E7 E4 o6 b上面包含了很多概念,下面就通过我的一个小故事来说明一些概念的意思。# B' f$ _9 i: A# |% z! U& H

" i! _+ L1 n- y0 b. q# Z上周末,我和我的媳妇,我的一个朋友和他的媳妇,我们四个人从老家出发一起来北京,我们共开了2辆车,我朋友的车是奔驰,我的车是帝豪(跟奔驰没法比)。我们4人2车就上路了,故事也就开始了:
2 W* P9 D; l6 [+ B) e; S
0 C4 Z, B8 B4 F* V7 W) d由于我们家是农村的,所以农村的路都是单行道,没法超车,我的车在前面,跑的很慢,后面的车再好也没办法,只能在屁股后面跟着,(静态流水线)。
8 L' [' n. u& s3 a$ ~5 i# }& V6 o6 g0 E# l
过了一会,有一个北京的同学(小武)给我打电话说上星期借我的那本《HeadFirst》看完了,说等我回北京后在还给我,我说行,这时我媳妇说,”小峰不是说要借这本书看吗,直接让小武把书给小峰不就得了吗,真是的,这么费劲,这样的话就不用等你回北京,然后小武把书给你,你再给小峰,多麻烦啊,还省得小峰等的着急“(直通技术)。, G9 C" G6 q5 z

! ]/ F1 Y- q2 ]终于,路变得宽了一些,,这时,我就把车开到了靠路边的地方(保留站),8 z% x+ a/ v/ p1 p  O  F& F" f

, @) V) C$ H$ D# J8 [7 y2 [奔驰不用再等我这辆小破车了,呜。。。一下子就跑到了我前面(动态流水线乱序执行),
0 V% x( t4 f/ e+ W
7 v2 A: `7 e! [, L7 c终于,上高速了,车道一下子变成了4个(多发射或超标量),$ R& a1 F4 Q. F' X

& Q8 {% L+ Y& P$ C* y9 _后来我们出了收费站,到了北京,马路多了很多条,有很多路线都可以到我住的那个地方(多核),
  ?- J0 c, g" v: o9 D5 V: M
  m& f  q, {* B& G4 s最后我们四个人到了我们家,我们家的大门口比较小,依次只能通过一个人,于是我们按照我们刚出老家的顺序,进入了我们家。(ROB)( p; K/ w0 e# B" Z' J

$ d1 }# _! p5 X4 D& h6 K到此为止,好了,有些地方可能不是太准确,请见谅。
3 n. J' D. X6 Y' K: C, F+ z' D3 [& p' X* r0 J0 d, Q( R
/ g- B8 u7 k4 o0 G1 ^
附:* ?9 m+ M/ |: ]$ }2 H
4 U0 v; Y, ~6 T
上面这些内容都是给CPU提供足够的粮食来喂饱饥饿的CPU,当然也不能忽略CPU的本质,就是计算。虽然计算模块在现在CPU的面积比例已经很少(20%左右),还是提一下吧,加法器,乘法器。乘法器的实现,是运用Booth算法,和华莱士树将两个数的相乘,变成两个数的相加来实现的。. ]1 I# k4 t/ u" g
; r2 a! I: k# N! A! J. k5 ^
小结
9 ]+ M/ x' H0 S5 V$ P1 Q4 [1 |. I$ V
书上学来终觉浅,绝知此事要躬行。最后以龙芯的框图来结束本文吧。: Y1 f: J  J' Z+ Z- |( z8 p4 p  [
9 s9 X, E2 m+ @6 y  s$ V+ s/ j

# }+ c4 f6 ~% u0 q4 I) O8 x  H' A- Q1 I+ V1 j* x5 D- r
, W1 }3 h) t- m! Z( Y% u

该用户从未签到

2#
发表于 2020-1-15 17:58 | 只看该作者
计算机体系结构
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 18:57 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表