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

介绍一下计算机体系结构

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
引言  
5 W1 C* @1 ~3 m3 _3 S' V1 u8 x7 w# i8 |9 `! r  N( x/ F/ ~
阵而后战,兵法之常,运用之妙,存乎一心。8 C% M- P; K* B
; n. {9 U6 p) D1 v# k- z% a
先说两个概念:
7 D1 W, `: h0 n  Y* t+ h1 ?( b. z3 d( _9 D5 _& L" j7 g& q6 }
1》图灵机:说白了,一句话,就是当前状态,和输入,共同决定输出内容。这样的机器,就是图灵机。图灵,是个名人,也是个人名,在二次世界大战中在一个小区里做出了很大贡献,当然不是他一个人在战斗。
- s/ Y$ ~$ Z3 R( \- p( w) {. B) @- V0 g1 b; }' f$ h6 E. }
2》计算机体系结构(冯。诺依曼):也说白了,一句话,就是,数据和操作都放在存储器中,CPU从存储器中取操作和数据,然后进行根据操作把数据运算一下,最后把运算结果也放到存储器中。操作和数据合在一起就是一条“指令”。很多指令合在一起,就是一个指令集。在很多年前,指令集在一定程度上就代表着计算机体系结构。
% T6 Y- M( `$ l" V
( c: R/ n' Q4 U$ E' D1 V2 y7 N$ D  Y冯。诺依曼体系结构就是图灵机的具体实现方式之一。
; n9 A4 x0 |9 i; _  l, h
! c# H0 U& |' T8 l# L" x! ?针对图灵机,举个例子,在大学的数字电路都学过的话就会发现,整个内容可以分成两类,一类是组合逻辑电路(由基本与或非门电路组成),一类是时序逻辑电路(由带反馈的门电路构成的触发器)。其实,要想有“当前状态”,就需要触发器(触发器组成寄存器),要想对输入和当前状态进行处理,就需要组合逻辑电路。组合电路和时序电路共同组成了现在的大规模集成电路,和超大规模集成电路(VLIC)。
, Z* r( C& d" w" A: @; O0 p( @
( y; L" ]3 s6 b: q7 F" t* n2 R) q针对计算机体系结构,也举个例子:
7 a( O$ g) A) \. M
( C% ^9 ?3 O) C% K; f% n1》,上世纪六七十年代,计算机体系结构,几乎就等同于ISA(指令集),这句话需要仔细体会一下。2 {; e6 N: H/ r  C7 i+ E9 j* u
/ @5 u* {* A* g' V+ d0 Z/ K
2》,上世纪八九十年代,“存储墙”导致了cache的出现,21世纪初,“功耗墙”导致了多核的出现,下一步,“带宽墙”会带来什么变革呢?
# Q5 ^" |6 S* ~( Y3 \3 p( e! |+ ~: o; X0 x+ u& U2 D
3》,汽车刚出现的时候,追求的是汽车能跑的快,试想,如果汽车还不如马车跑得快的话,还买汽车啊。但是你看现在,追求的是油耗,是跑100公里耗几个油儿。这,就是时代的进步。/ o: E$ G4 ^/ ]' }

/ U8 U  |3 a3 I4》还要记住一点,就是principle of entropy increase。即熵增加原理,在孤立系统中,一切不可逆过程必然朝着熵增加的方向进行。熵是什么呢,就是体系的混乱程度。计算机的工作的本质,就是把无序的事情变得有序。
7 ~! D! U5 _" |+ ?% I) l8 n( V! x  k! L# l7 G5 e* a0 R
/ B. F$ ~& m# h
计算机体系结构
5 S' T9 M8 r) D, j2 C0 `) v8 i8 P$ Q
/ ~3 e* s5 R; L9 G: z反过头去看一下冯诺依曼体系结构,) t6 q4 a  c2 j- L: b
3 K% R& _$ Q: q
1》刚开始,要想让计算机运行的更快,就是要给CPU提供足够的操作和数据,为了提供操作(指令)就引进了转移预测技术,为了提供数据就引进了cache技术,为了提高执行速度,$ d, x9 g1 R% |0 j& O, g5 ~2 M

2 V, x1 U* L4 Y: B2》就有了流水线,有了流水线就有了流水线遇险(hazard)的问题,包括(RAW,WAR,WAW),
) H( T; {) U1 z/ @4 v8 s
  j1 Z7 k. [8 Q3》为了解决RAW,就引入了直通(bypass)技术,2 e+ l4 p$ ?+ b, |: Q$ Y% j  g

, R% i, r5 Y. n4》为了解决WAR和WAW,就引入了乱序执行技术,即保留站技术(tomasulo),寄存器重命名(renaming)技术,% r* }: Y6 E2 r. h! O) P3 T, [& U

$ D3 S# ~4 `6 F/ o5》但是乱序执行就使异常不精确(精确异常,就是异常产生时要保证,产生异常的这条指令前面的指令都执行完毕,后面的指令都没有执行,这样,异常返回后知道从哪开始执行),9 g7 T+ \0 h- \4 O- n
4 I" \8 ~4 W$ l" V  w4 l
6》为了实现精确异常,就引进了重排序缓存技术(ROB:reorder buffer),5 F/ z+ B4 X* V9 s
+ T$ i! B( i, S! U
自此,纵观一下,体系结构的工作就是,顺序进入,乱序执行,有序提交,这样一个过程。
/ ^) l. P3 i! G$ M: I) v3 H/ P4 N3 ]- ^8 R

# \& G- |8 l" n# V+ T4 T即使这样,人类还不满足,于是再增加流水线的条数,即超标量,
3 S/ ~! W0 j& o& d5 R) I
* k% F. |& e3 A- P把流水线的级数增加以提高工作平率,即超流水线。/ [# z4 P+ M9 y. A: T
+ q3 u7 X5 _$ c# O/ d2 |
以上这些,归于5个字:指令集并行(ILP)。" f; Y% W2 G/ T% A# U

" \' k2 t4 S( ^  m所以人们又开发线程级并行技术,进程级并行。所以就有了多核的CPU。当然,事情还不只这些,暗硅(dark silicon)问题,工作电压接近晶体管阈值,集成度造成的功耗问题,等等等等这些,人们就相出了很多办法,单个CPU咱们进一步有困难,咱们就把多个CPU放在一块,咱们就搞ASIC,搞FPGA,搞CPU和ASIC的混合物(heterogeneous architecture)。
4 h, z$ m) g* K: m
& J$ b% d) r8 T8 ^9 X; K: Y0 \2 X7 C/ r
一个小故事
( k6 i: p! |& R3 t- ^  o& p1 O7 o  o/ B
上面包含了很多概念,下面就通过我的一个小故事来说明一些概念的意思。
( \- ~8 E8 t4 z3 B; y& l* s. b, B+ i- S8 @$ N
上周末,我和我的媳妇,我的一个朋友和他的媳妇,我们四个人从老家出发一起来北京,我们共开了2辆车,我朋友的车是奔驰,我的车是帝豪(跟奔驰没法比)。我们4人2车就上路了,故事也就开始了:
" E/ Z$ `2 _6 d: B& M
: t" q) c7 v- B% q% j由于我们家是农村的,所以农村的路都是单行道,没法超车,我的车在前面,跑的很慢,后面的车再好也没办法,只能在屁股后面跟着,(静态流水线)。
5 J2 h- ?+ x, M; i, F4 A1 E0 W9 P1 k7 _; N/ a. @; u' L
过了一会,有一个北京的同学(小武)给我打电话说上星期借我的那本《HeadFirst》看完了,说等我回北京后在还给我,我说行,这时我媳妇说,”小峰不是说要借这本书看吗,直接让小武把书给小峰不就得了吗,真是的,这么费劲,这样的话就不用等你回北京,然后小武把书给你,你再给小峰,多麻烦啊,还省得小峰等的着急“(直通技术)。
- q  Q* Z! A/ P' ^9 y. \: h( h2 h7 G' q
终于,路变得宽了一些,,这时,我就把车开到了靠路边的地方(保留站),% u+ Q' b$ r  q3 l* p  }4 f$ y- ?

, d8 \9 W9 z& [) C. O奔驰不用再等我这辆小破车了,呜。。。一下子就跑到了我前面(动态流水线乱序执行),
' z. W( j$ x1 V1 ]+ H- i$ v' T" S, R9 ~1 \0 f) n6 ~
终于,上高速了,车道一下子变成了4个(多发射或超标量),6 ]) Y8 ~/ A. Y3 h" q
- x, l" @5 \9 R+ ?  a
后来我们出了收费站,到了北京,马路多了很多条,有很多路线都可以到我住的那个地方(多核),
% b( M. `4 e4 {2 f$ V* w3 ~% Z$ a1 c5 g) ~7 V! e& [
最后我们四个人到了我们家,我们家的大门口比较小,依次只能通过一个人,于是我们按照我们刚出老家的顺序,进入了我们家。(ROB)& R7 l- K& u& f" x- n8 @) s; X

" {  ?6 K5 L* E: x& A; Q1 U) i. T: F到此为止,好了,有些地方可能不是太准确,请见谅。7 i; z+ q( y) D) t% j$ ?3 U8 A  O

1 h5 m# `6 O7 r6 E1 ?2 |% R( Q  e# w* n3 C
附:) R/ G: B1 @$ N/ W2 Q' c

$ U$ b5 T$ D; {0 j( q' r0 F上面这些内容都是给CPU提供足够的粮食来喂饱饥饿的CPU,当然也不能忽略CPU的本质,就是计算。虽然计算模块在现在CPU的面积比例已经很少(20%左右),还是提一下吧,加法器,乘法器。乘法器的实现,是运用Booth算法,和华莱士树将两个数的相乘,变成两个数的相加来实现的。
! k; f' ]- v6 c- B) j% L' h, ^3 b) y, m: h; }* n
小结' {; Y1 T+ y/ O) M/ b

, o3 {! l8 |0 }. ^5 P书上学来终觉浅,绝知此事要躬行。最后以龙芯的框图来结束本文吧。
0 Y. N6 ?: h- k. G$ j# l# Y$ Z, j' M) w7 _, U* \2 a$ ~4 U
3 z+ a- v( R* }, C
0 `# Z5 G0 m5 n

) a6 H8 Y2 `+ n+ d. v3 c  l

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 14:07 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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