- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深入浅谈,CPU设计原理
深入浅谈,CPU设计原理
序言
也许很多朋友都会对CPU的原理比较感兴趣,从网上大家可以搜集到“利用晶体管的开关闭合进行二进制运算或数据存贮”之类的东西,但是CPU的性能由何决定?CPU内部的设计师如何的?分支预测,乱序执行到底是什么?超长流水线,RISC又是何物?为什么酷睿的CPU频率低,但是比高频率的P4性能好那么多?这些我们应用中遇见的问题绝对不是几句简单的话语可以解释的。
写本文的目的,就是想让大家对CPU的了解更加深刻一些,更好的理解CPU到底是怎么运转的。但同样,考虑到仅仅是普及文,我个人不会对一些特别的技术和实现方式(比如逻辑电路的设计,编译原理等等)进行详细讲解,我们只需要知道这些东西通过一些设计就可以达到预期的效果,具体问题是工程师的问题。我会尽量让文章做到范围广,深度浅,把晦涩难懂的知识尽量具体化形象化,但不得不承认我也只是一个普通爱好者,所以错误也是难免的,希望大家共同交流,相互促进。
这玩意实在太长了,不可能一帖,甚至几帖就可以说完,所以我决定利用连载的方式来写这篇文章。
内容大体分为三大章
1 处理器的数据线路和控制实现
2 流水线及其带来的问题
3 存储器结构的讨论
系统学习是比较繁琐的,但是想要了解一些东西必须要把基础打好,希望有心的朋友仔细读下去,我相信也许你会爱上计算机。
1.1 指令的执行过程(这里没有涉及到高级语言的编译,所以没有翻译指令)
CPU的性能由哪些因素决定?我想大多数人都会知道时钟周期这个概念,而另两条“指令数目”,“指令所需时钟周期数(CPI)”是并不为人所知的。而不同的内部架构,也便深刻的影响了CPI的大小,所以有些处理器频率低但是处理任务更快。不过别急,一口吃一个胖子是不行的,在我们对CPU的架构进行探讨之前,先来看看CPU是怎么处理一条指令的。
一条指令,首先会根据程序计数器(记录当前运行的指令地址,本身也是一种寄存器)从内存中去处指令,通过指令字段的内容,选择读取一个或者两个寄存器(在汇编语言中,一条代码,即一个指令只能使用1或2个寄存器进行加减乘除运算,而寄存器,就是记录数据的一个东西,当然他还有更多用途,之后我们会提及)一旦取得寄存器的操作数后,就可以对指令进行定性,大致分为三种,存储访问,算术逻辑和分支(分支也可以叫做跳转,一般的高级语言都用if语句,判断一些特定条件从而进行两种或者更多的操作)存储访问指令需要对存储单元进行读出或者写入而访问寄存器;算术逻辑指令需要将ALU(运算器)计算得到的数据写回寄存器;而分支指令则会通过对数据的比较,决定是否对下条指令地址进行修改(也就是是否进行if语句中的or后面的语句)
话外音:一条高级语言首先会被编译为汇编语言,之后通过指令集将其编译为二进制信号,从而让CPU明白它需要做哪些操作。
不要将缓存和寄存器的概念混淆,最好从百度百科上看看相应资料。缓存我们会在第三大章进行详细讨论。
1.2 数据通路的建立
什么叫数据通路?我想聪明的你一定知道,让一条指令顺畅执行下去,这就是一条数据通路,它包括指令,数据存储器,寄存器堆,运算单元和加法器(加法器是对程序计数器进行调节的,也就是说当前指令执行完毕之后,加法器对程序计数器加上4,就可以切换到下一个指令地址,关于为什么加4这里不多说,在第三大章我们会提及)。
想要构成数据通路,首先需要一个存储程序指令的地方,那么我们就需要一个存储单元来存储程序指令,并根据所给地址提供指令。当前需要执行的指令一定要放在一个存储单元中,这就是我们之前提到的程序计数器(PC),然后同一个加法器增加PC的值使它指向下一条指令的地址。
得到了指令地址,就可以让ALU对指令进行处理,从而得到结果,而ALU想要进行计算,就需要从寄存器获得数据并写入寄存器,这样,我们就需要一个寄存器堆,来暂时存储这些指令地址,信息等等。
如果是储存访问指令和算术指令的话,那么接下来只需要将寄存器的数据显示,或者暂时储存就可以了,若是分支指令,就需要对ALU的数据和寄存器的数据进行比较,如果为真,则执行if语句后紧跟的语句,如果为假,就会执行if语句中or后紧跟的语句,所以说分支指令总是延迟的,因为在没有得出指令的真假时我们不能对接下来的指令进行处理。
1.3 指令的处理实现
一条指令,通过拆分(解码器就是对指令进行拆分,重排等操作的,使用逻辑电路从而达到了一种特殊算法),因为ALU的处理能力是一定的,所以有些复杂指令不能在一个周期内处理完,而需要拆分或者让ALU利用更长的一个周期重复处理这段指令。
对于单周期实现,和1.2节中的数据通路非常相近,如果有不熟悉的
您可能关注的文档
最近下载
- 新人音版二年级音乐下册优秀教学设计《共产儿童团歌》教案.doc VIP
- 肝硬化诊治指南2025年.docx
- 初中数学新人教版八年级上册13综合与实践 确定匀质薄板的重心位置教学课件2025秋.pptx VIP
- 08【人教版英语字帖】八年级上册单词表衡水体字帖(新目标含音标).pdf VIP
- 2023年10月自考06089劳动关系与劳动法押题及答案.pdf VIP
- 新教科版小学科学实验目录五年级上册.docx VIP
- 合理用药用药班会PPT课件.pptx VIP
- 结构设计弯矩二次分配法计算(表格自带公式).xls VIP
- 规范言行从我做起主题班会.pptx
- PanelView Plus 7 Performance 终端用户手册.pdf VIP
文档评论(0)