首 页   新闻 | 行情 | 评测 | 调研 | 数码导购 | DIY | 专题 | 报价 | 论坛 | 二手 | 下载 | 博客 | 商城 | 拍卖 | 网址 | 分类
消费数码 手机 数码相机 MP3 MP4 数字家庭 硬 件 CPU 内存/硬盘 主板 显卡 音箱 机箱/散热器 光磁 显示器 游戏库 电影 音乐 小游戏
电 脑 笔记本 电脑 服务器 办公外设 打印机/耗材 键盘/鼠标/摄像头 投影机 企 业 中小企业 网络设备 方案 安全 克丽发现
产 品 价格查询 产品大全 排行榜 术语 产品论坛 图搜 厂商 经销商 商家库 商情快报 商城 活 动 PC采购攻略 模拟攒机 DELL直销店
中关村在线 - 大中华区 最具商业价值的IT专业网站 - The most valuable and professinal IT business website in Great China
ZOL首页 > 评测中心 > 技术评测       查看全部技术评测文章

拨云见日——深入彻底了解AMD64架构

类型:编译 作者:【中关村在线 新人类】 日期:2003-09-23 14:54:56




内容导航
解码器和管道,内部单元形态

   在文章的前面部分我们已经很清楚地写明了,其中K8处理器有个重大的改变,那就是X86 指令的解码器。在我们深入阐述其中的特别改变之前,首先要谈论一下架构的"ideology"(意识形态)或者更明确地讲就是"Concept"(概念)。

    事情就是(已经不再是秘密了)所有x86 处理器的内部指令系统与外部指令系统有很大的区别。如果说大家对后者的理解是比较清晰的话,那么对于前者则是难于理解。例如,几乎每个深入处理器的人都知道,在x86 里面指令被分割为简单的部分(顺便说一下,说到x86 指令,我们指的是AMD64 指令;以后都是这个意思)。但似乎现在的处理器与我们将要谈论的将会有比较大的区别,因此我们尽量使它们更加有条理些。但现在让我们让读者熟识把外部指令转移到内部指令的必要性。

    总的来说,任何微处理器架构都是为了释放最大的性能(我们不是说像Alchemy 1500这样的特别芯片---PDA 市场对于性能的需要并非那么敏感),努力达到市场的需要。因此,你要知道一些缺陷并非是由于开发者的能力而造成,而是根据市场需要的折中产物。说到x86 处理器,Intel 和AMD 选择了不同的途径来获得最大的性能。如果你记得的话,性能从简单上说就是 :时钟速度 x 每个时钟处理的指令数目。因此,为了提升性能,我们就增加这两个乘数就可以了。这也是公司选择不同途径的地方---Intel 选择了关注时钟速度,而AMD 则关注每个时钟处理的指令数目。

    虽然所有未来的架构都选择了不同的概念。但是Pentium 4,K7 ,K8都依然支持x86 指令 。

    此外,由于解码器造成的影响而使得开发人员们的设计带来了困难,因为:

  1. x86 指令具有不规则的长度(超过15 bytes!)

  2. 此外,x86 指令的排列是不规则的。例如,一个opcode 占据了首个指令的第一个空间,但却在第二个空间里面

    由于这样的原因,似乎在固定的架构发送微处理器的功能单元(FU),"transform"(传输) x86 指令到规则的内部指令就比较简单。此外,这样的内部指令可能还包括了额外的领域(例如简化的操作搜索),以此类推,其实我们可以把它想象为汽车的排汽管。但是制造者并不喜欢它们,因为他们必须为管道设置一定的顺序。在完成了这些步骤之后,它们才能够继续解释。现在我猜大家应该明白管道对于获得高性能是那么重要了吧。

    其实自从1993年Pentium x86 处理器就开始采用了Superscalar( 超标量体系结构),例如,设法在每个时钟尽可能多地处理指令。在我们的例子里面,我们可以想象成两个(或者更多)的汽车管线。这样可以提升处理器的性能,当然还会产生其它新的问题。

    问题的产生是与x86指令的变量长度有关,而它是 超标量体系结构设计的主要革新 。在这个架构,把外部指令传输到内部是非常简单的。这个革新本身是由于并行选择数个指令而产生的。在第一个指令分析之后,需要定位第二个指令(在最简单的情况它将花费一个或者更多的时钟,这使得性能非常低下)。你能够以数据流的方式同步分析一系列的指令流,但 价格/性能 将不能够令人满意。因此使用了综合的解决方案。

    想我们首先分析Pentium 4 和K7之间的区别,然后是K8 。在K7 和Pentium 4 的首个阶段,它们都利用相当简单的并行指令处理,但是接下来的阶段则将有较大的区别。

    Pentium 4:一般的概念是转换 x86 指令为规则的形态,"RISC-like" microops 。

    从代码选择x86 指令,解码器会把它们转换为 microops 。在第二个指令的相同部分搜索的时候将不会损失时间(我们之前已经提到过了,这是硬的部分),Pentium 4 在Trace Cache(跟踪缓存)里储存了解码器。解码器让管道异步工作(我指的是拍子,而不是时钟速度),这是Pentium 4 主要概念的结果---尽可能多地获得时钟速度。当然,精心准备的microop 能够比不规则的和变量大小的x86 指令,执行起来更加快速和有效率。因此Pentium 4 设法为跟踪缓存保持尽可能多的转换选项。Trace Cache 能够储存超过12 000 个microop 。并且单独的x86 指令,能够转换为一个,两个,三个,或者更多的microop ,保持指令缓存的的容量影响也不大。Trace cache 指令将随着时间而发生改变,因此比较Pentium 4 和它直接竞争对手的指令缓存是不可能的。

    K7:在这个处理器里,I-cache(指令缓存)性能是它的主要任务---保持x86指令,这些指令最终会被转换为内部microop,但却以不同的方式进行处理。在选择和分析了一个指令之湖,K7(K8)把排列的信息储存在特定的bit 队列里(解码队列)。而这些指令本身则会被转换为内部的格式。在完成了这些工作之后,它就不用在执行重新浏览代码来搜索指令的队列。解码队列与I-cache进行关联,但是在晶体内部的物理结构上,它们是分开的。x86指令(储存在I-cache)的每个byte 有3个相应的bits储存在解码阵列里。如果给出的特定byte是 1st/最先,或者最后,这里假设是前者,这指令将沿着特定的解码路径前进。

    因此我们有了两个完全不同的实现方法:Pentium 4 储存了几乎所有的解码结果(microop),而K7/K8 则在重复的解码中储存了简单有用的信息。这意味着K7/K8 必须具备优秀的重复解码引擎来利用这些好处(本质上说就是高I-cache 容量)。但现在让我们先把这些描述的方法抛到一边,而在看看解码器的结构单元。

    在K7/K8 解码的最后阶段,初始化的x86指令会被转换为特定的内部macroop或者mOps。大部分x86 指令对应单个mOps,单有些则转换为2或者3个mOps;其中最复杂的像分割或者三角函数 - 成为10个顺序的mops 。Macroops 有固定的长度和规则的结构,而ROP(microop)对应为简单的指令发送给处理器单元用于执行,mOP 在"coupled"(连接)函数单元对应两个执行的指令。在这里,你可以想像mOP可以被"分裂"或者"产生" 2 个ROPs 。最后,mOP 包含了所有执行两个指令所需要的信息。但是使用更加复杂ROP 的方法又是怎样的呢?我们知道很多x86 指令是在内存以数据的形式执行复杂的运作---不仅是读/写,还有改变(例如计数器的递增)。在完成了把指令转换为内部格式,ROPs 能够在CPU 单元的周围给出相关的"漫游" 特权,或者把它们加入单一的"macroop" 。在后种情况,我们不仅从元素转换的数量受益,还有各自的逻辑,还有相当少的中间 读/写选项。最后,我们甚至能够减少执行选项的数量。例如,在计数器的例子里,我们仅需要依次地址计算(而在单独的ROPs 需要两次)。事实上。K7和K8 的mOPs 都包含了两个指令 -- 一个是用于ALU(或者FPU),另外一个是给AGU(地址发生单元)。如果两者都没有,例如指令不访问内存和不需要计算地址,各自的mOP 空间将包含NULL-ROP 。注意解码的mOP 将在它自己的的信道里"ride" CPU  管道,最终并它引导一对函数单元(ALU/FPU和AGU) 。详细点说,这些mOP 将得到保留的位置,在那里它将产生两个ROPs,以发送到更加适合的顺序, 这里将不听会应用程序的指令(当然该顺序将不会与应用程序的逻辑单元发生冲突,而与准备就绪的操作数和装载的函数单元相配)。最后1mOP = ROP 用于ALU(FPU) + ROP 用于AGU :未来的处理器每个信道将可能有第3个单元,而将使mOP 更加复杂。

   因此,让mOP沿着信道运行,我们能够并行执行两个指令。但怎么样才能够执行更多的指令?其实通过增加更多的并行信道就可以了,其中每个有一个mOP 。AMD 在它的K7/K8 处理器使用了相同的方法,它们有3个对称的信道,每个都有自己独特的队列和一对函数单元。最后我们能够在6个函数单元执行指令。

   这里我们指发送指令的执行过程中,在CPU单元里可以分成10个指令段并行执行。此外,在K7,K8中都有10个函数单元:3 x ALU ,3 x FPU ,3 x AGU和独立的乘法单元 。每个信道都根据指令处理的值分支处理,因此mOPs 被一个整数或者具有AGU 保留命令的FPU直接管理 。

    现在让我们谈谈K7/K8 的基本概念,我们知道在一个mOP 里面整合两个microop 能够产生意想不到的效益。相同的事情也在mOP身上发生,它们通常被组织成组。一组由并行信道直接管理3个同时执行的mOPs 。更深一层的处理是 mOP "triplets"(它们被称为"线")。 从CPU 的ICU(指令控制单元)看,一个mOP 线是单个的整体。所有的举措,和根本上的资源定位都是以线为单位执行。因此,组是3个信道队列分配成的线(每个信道都有自己的队列),这里mOPs 或者ROPs 有时候是独立的。它们以尽可能最好顺序在FU里选择执行单元。当所有线mOPs 的元素都被执行了,那么队列就会被释放。在执行结果被写到记录文件之后 ,相同的资源也会被释放。

    AMD 骄傲地把该项技术命名为"line-oriented",不过它真的有值得骄傲的理由。每个管道都使用"信道"来表示,但其实"channel"(信道)并非精确的术语,根据上下文,使用"Position"(位置),"issue position"(流经位置),"lane"(通道)更加适合些。

     我们有3个对称同步和并行的信道,MOPs 沿着管道传输并与信道保持接触。这将消除指令传输的后阶段,并且沿着端口连接到特定情节需要的特定F U(而通常这是CPU最热的部分)。"line-oriented" 通路有非常重要的限制控制单元和大量它控制的元素。使用mOPs 代替ROPs 作为线元素允许增加它的效率宽度,例如每个时钟处理的指令数目。最后,同步处理的元素可以随着信道数量的增加而增加(还有各自的FU数量)。尽管主要的概念是增加管道设计的宽度,但这样的方法仍旧是非常有效的,它们能够使管线更加深。

     下面你能够主要到K7和Pentium 4 概念的主要区别。如果说Pentium 4 的主要目的是更到的时钟速度,那么K7(还有K8)都是为了每个时钟最大的mOPs (最终目的是每个时钟执行更多的x86指令)。

      为了证明这种情形,我们可以使用汽车管线的例子。想象我们具有3倍汽车的道路,那么可以并行通过3辆汽车。



内容导航:
第3页: 解码器和管道,内部单元形态


资料来源:编译投稿
文章字数:4076
 
相关文章
采用Dothan的笔记本明年第一季度上市 (2003-10-08)
Intel被AMD所迫,新推出Xeon DP 3.2G (2003-10-08)
Intel高端产品缺货,DDR内存价格下挫 (2003-10-08)
2003年9月CPU市场用户喜爱度和价格分析报告 (2003-10-08)
节内毒龙1600MHz狂缺,节后有望缓解 (2003-10-07)
AMD的Athlon64击败APPLE的PowerMac G5 (2003-09-30)
英特尔Xeon 1M缓存3.20GHz芯片下周出台 (2003-09-30)

短信中心
[图片] [铃声] [短语] [自写短信]
圣诞老人来了
圣诞夜歌
平安夜圣诞歌
朋友(臧天朔)
I love you
First love
世界杯主题曲
谁让你流泪
精品/专题

联想“蓄谋”液晶风暴

联想智存卡-纤巧轻薄、智慧随身

让游戏做主--暑期主流显卡评测--A卡篇

让游戏做主--暑期主流显卡评测--N卡篇
当前栏目最新文章
好马配好鞍--64-bit 操作系统全接触
华硕上演X战警II 支持双至强PC-DL测试
超强解析-四大品牌八款主流散热器横向评测
决战的日子:AMD Athlon 64 @ Athlon64 FX
ZOL最新奉献--10款N卡火拼17款最新游戏
拨云见日——深入彻底了解AMD64架构
865PE主板待购者必看,内存对比测试满汉全席
左萦右拂,最大限度压榨威刚DDR500内存潜力

ZOL简介 | 用户注册 | 广告服务 | 人员招聘(月) | ZOL历程 | 互动营销中心 | 站点地图 | 联系方式 | 欢迎投稿 | RSS订阅 | 友情链接
北京海淀区知春路113号银网中心A座9F 传真:010-62529275 反馈留言板 欢迎批评指正
Copyright © 1999 - ZOL. All rights reserved. 中关村在线 版权所有. 京ICP证010391号