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

介绍一下计算机体系结构

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
引言  8 M/ L5 }& i9 K; L8 A
# j. w! e8 V% t8 _7 ^9 C5 A
阵而后战,兵法之常,运用之妙,存乎一心。
7 G" j/ p1 I6 [% n! U
, J+ t/ `3 K1 Y3 O! ~% g先说两个概念:
0 r$ G/ r, x  @! y' _' k/ m2 Q( k* b/ q2 r: o  i
1》图灵机:说白了,一句话,就是当前状态,和输入,共同决定输出内容。这样的机器,就是图灵机。图灵,是个名人,也是个人名,在二次世界大战中在一个小区里做出了很大贡献,当然不是他一个人在战斗。
6 w. N; O  o/ d+ B7 }0 E+ c! w# \: d: s
2》计算机体系结构(冯。诺依曼):也说白了,一句话,就是,数据和操作都放在存储器中,CPU从存储器中取操作和数据,然后进行根据操作把数据运算一下,最后把运算结果也放到存储器中。操作和数据合在一起就是一条“指令”。很多指令合在一起,就是一个指令集。在很多年前,指令集在一定程度上就代表着计算机体系结构。) |, ?/ f9 y( X2 A& Z
7 ]4 {- M# |! j* p* C  O" n
冯。诺依曼体系结构就是图灵机的具体实现方式之一。
; X$ @! r1 Q% T7 K6 w+ E% Z( ]. H  e% L. W, @1 P5 n7 m
针对图灵机,举个例子,在大学的数字电路都学过的话就会发现,整个内容可以分成两类,一类是组合逻辑电路(由基本与或非门电路组成),一类是时序逻辑电路(由带反馈的门电路构成的触发器)。其实,要想有“当前状态”,就需要触发器(触发器组成寄存器),要想对输入和当前状态进行处理,就需要组合逻辑电路。组合电路和时序电路共同组成了现在的大规模集成电路,和超大规模集成电路(VLIC)。* k$ y( t1 U  c/ c: i

) U4 b0 t  ~/ t$ X, w/ y: o9 A针对计算机体系结构,也举个例子:
" |: t2 j0 _1 b8 n0 q/ K
/ }2 A! U+ A3 W/ E9 O1》,上世纪六七十年代,计算机体系结构,几乎就等同于ISA(指令集),这句话需要仔细体会一下。
# m8 a( v4 @2 ~& t+ k0 B, i! \. R1 W+ {' ^  o' Q. ~( M
2》,上世纪八九十年代,“存储墙”导致了cache的出现,21世纪初,“功耗墙”导致了多核的出现,下一步,“带宽墙”会带来什么变革呢?
$ o( {( {' R- o; ?4 W# O
7 m4 f; G5 R. S8 S/ R, V7 R3》,汽车刚出现的时候,追求的是汽车能跑的快,试想,如果汽车还不如马车跑得快的话,还买汽车啊。但是你看现在,追求的是油耗,是跑100公里耗几个油儿。这,就是时代的进步。! j7 v. J" G- c
5 ^# B2 ^9 g9 U2 L; r) i
4》还要记住一点,就是principle of entropy increase。即熵增加原理,在孤立系统中,一切不可逆过程必然朝着熵增加的方向进行。熵是什么呢,就是体系的混乱程度。计算机的工作的本质,就是把无序的事情变得有序。
% ?4 p, f) G7 d& ?1 Q
( m) V) {/ Q1 [. z: A
' [' m  ?" Q8 h; _( ]计算机体系结构  o/ h1 i8 z2 ~* C4 V

3 g) r" j% d# G# G  P8 H反过头去看一下冯诺依曼体系结构,2 m/ E7 s6 Y% z
5 \' S- U9 x, K' ?
1》刚开始,要想让计算机运行的更快,就是要给CPU提供足够的操作和数据,为了提供操作(指令)就引进了转移预测技术,为了提供数据就引进了cache技术,为了提高执行速度,
7 O1 S! s% V$ N- T: [1 c/ V
3 B! z& z* o$ ?2 m, k# I2》就有了流水线,有了流水线就有了流水线遇险(hazard)的问题,包括(RAW,WAR,WAW),
" P& B$ z. \4 X6 J2 j9 [9 r( [& O, c9 h* `
3》为了解决RAW,就引入了直通(bypass)技术,) f; K! |4 @+ K0 i3 C

) u& L4 x; l& w* x, ]- y5 z4》为了解决WAR和WAW,就引入了乱序执行技术,即保留站技术(tomasulo),寄存器重命名(renaming)技术," P; U$ G9 Y# s6 d4 |
. d# j* J+ H" q* \
5》但是乱序执行就使异常不精确(精确异常,就是异常产生时要保证,产生异常的这条指令前面的指令都执行完毕,后面的指令都没有执行,这样,异常返回后知道从哪开始执行),% `* ~9 v0 _: A4 _- P
8 f6 l% G- t. ?! m+ m
6》为了实现精确异常,就引进了重排序缓存技术(ROB:reorder buffer),
& f5 f* ^: G" V9 H
% V/ R2 ^8 b5 J自此,纵观一下,体系结构的工作就是,顺序进入,乱序执行,有序提交,这样一个过程。! w+ k3 B2 N8 {/ N

$ p; m$ F0 Z) ~- [+ z  }8 }+ z
4 g3 A" r, N9 _/ Z5 S; K9 v; \即使这样,人类还不满足,于是再增加流水线的条数,即超标量,
4 U' q& x3 e4 P- n8 D# K* T# j
6 w! \7 W1 O2 i7 u把流水线的级数增加以提高工作平率,即超流水线。3 X7 Z1 M; F* ]& W  C4 a! C( S" [, l

% I- {2 y& Z7 Y7 Q以上这些,归于5个字:指令集并行(ILP)。1 B8 P# |  k6 a

* J$ I: Z9 J2 d/ O. n* Y, Z4 Y所以人们又开发线程级并行技术,进程级并行。所以就有了多核的CPU。当然,事情还不只这些,暗硅(dark silicon)问题,工作电压接近晶体管阈值,集成度造成的功耗问题,等等等等这些,人们就相出了很多办法,单个CPU咱们进一步有困难,咱们就把多个CPU放在一块,咱们就搞ASIC,搞FPGA,搞CPU和ASIC的混合物(heterogeneous architecture)。8 H" X+ B- m% K  v- N) s

! k5 U/ S1 f$ Q5 V
/ I9 G& b7 I; d一个小故事1 ~4 |; b' B/ u9 |

$ T" T* r0 A1 v- S+ A, U9 ^上面包含了很多概念,下面就通过我的一个小故事来说明一些概念的意思。& s" u. N( d2 N8 J: j3 _

( Y( \6 U- z) |/ g1 H上周末,我和我的媳妇,我的一个朋友和他的媳妇,我们四个人从老家出发一起来北京,我们共开了2辆车,我朋友的车是奔驰,我的车是帝豪(跟奔驰没法比)。我们4人2车就上路了,故事也就开始了:
: k9 D/ E8 {: h% g: X
( l$ R: ?1 I& q. c: X1 m, _由于我们家是农村的,所以农村的路都是单行道,没法超车,我的车在前面,跑的很慢,后面的车再好也没办法,只能在屁股后面跟着,(静态流水线)。
9 R5 w- s) u2 |( C& Q; N: @; u  U% e8 p
过了一会,有一个北京的同学(小武)给我打电话说上星期借我的那本《HeadFirst》看完了,说等我回北京后在还给我,我说行,这时我媳妇说,”小峰不是说要借这本书看吗,直接让小武把书给小峰不就得了吗,真是的,这么费劲,这样的话就不用等你回北京,然后小武把书给你,你再给小峰,多麻烦啊,还省得小峰等的着急“(直通技术)。
, S* T2 R8 z+ p  W5 ]7 a; Q) t9 u! J0 i
终于,路变得宽了一些,,这时,我就把车开到了靠路边的地方(保留站),
" p4 I4 T, k7 Z( W
: E1 l" d5 Z/ u3 }  Z# q奔驰不用再等我这辆小破车了,呜。。。一下子就跑到了我前面(动态流水线乱序执行),
! A% k% O# ?9 x6 J8 a5 Z2 Y3 P
$ v; }, M6 s" G: O0 y7 O/ ~- b5 g终于,上高速了,车道一下子变成了4个(多发射或超标量),) h$ O( H8 K# S* S
0 s4 C' k8 A; E( p, S) `3 |4 }
后来我们出了收费站,到了北京,马路多了很多条,有很多路线都可以到我住的那个地方(多核),! H* v. n6 c6 {9 b, {

; K2 A, A: M/ ~4 s" N+ w/ I3 ?5 u最后我们四个人到了我们家,我们家的大门口比较小,依次只能通过一个人,于是我们按照我们刚出老家的顺序,进入了我们家。(ROB)5 |6 M; f6 _6 W% G

) Q, u2 H% S& T; g. Y9 W到此为止,好了,有些地方可能不是太准确,请见谅。: E# \- t% g7 F6 h0 [* R7 z) o
% q: B  K7 X9 _3 G7 L6 V
  _. d, ~* ^! b1 I1 h; P
附:
3 L" P: F$ Z. z% h% \+ b4 m8 j
" e1 Q2 j0 {% O( @1 M" C) A5 t" Q3 B' J上面这些内容都是给CPU提供足够的粮食来喂饱饥饿的CPU,当然也不能忽略CPU的本质,就是计算。虽然计算模块在现在CPU的面积比例已经很少(20%左右),还是提一下吧,加法器,乘法器。乘法器的实现,是运用Booth算法,和华莱士树将两个数的相乘,变成两个数的相加来实现的。% A/ u! J! E' K; x0 R

/ ]: y! A9 b5 J5 m5 k小结
. U' {0 t) Q4 i3 @! j- f1 K' Z& f& m0 X) ?( X% K7 v6 ?+ O) s$ o" K
书上学来终觉浅,绝知此事要躬行。最后以龙芯的框图来结束本文吧。
( y" N' `* z4 H
4 X5 A! j6 U+ m% ~. c5 C' ? 2 v/ V1 e  J, z5 B6 v: t+ n2 {
. ]& o) Z' ~$ y
6 O1 |+ w  R6 D- ]

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-25 16:37 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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