脚气病缺什么维生素| 白球比低是什么原因| 尿路感染不能吃什么东西| 荷花是什么形状的| 什么的假山| 吃鹅蛋有什么好处和坏处| 七月一日什么节| 草字头加青读什么| 1983属什么| 梦见女尸是什么预兆| 痛风挂什么科就医| 扁桃体发炎看什么科| 吃什么中药能降血压| 黑曜石是什么材质| 西汉后面是什么朝代| 核磁共振什么时候出结果| 儿童中暑吃什么药| 假卵是什么样子的| 窗口是什么意思| 王维是什么派诗人| 白喉采取什么隔离| 肝内钙化灶是什么意思| 连锁反应是什么意思| 指甲有条纹是什么原因| 感想是什么意思| lagogo是什么牌子| 孔雀翎是什么东西| 二百五是什么意思| jc是什么牌子| 感染四项挂什么科| 什么的森林| 小腹胀胀的是什么原因| 什么是反流性食管炎| 梦到蛇预示着什么意思| 81年的鸡是什么命| 火华读什么| 为什么尿是黄的| 拍身份证穿什么衣服| 猫贫血吃什么补血最快| 什么样的梦想| 喝碱性水有什么好处| 什么病会引起皮肤瘙痒| 锻炼pc肌有什么好处| 正比和反比是什么意思| 伤官运是什么意思| 螨虫用什么药可以杀死它| 氪金什么意思| 星字属于五行属什么| 出气不顺畅是什么原因| 胆囊壁胆固醇结晶是什么意思| 身上长肉疙瘩是什么原因| vans属于什么档次| 高血压2级是什么意思| 手指尖麻木是什么原因| 新加坡属于什么气候| o型血父母是什么血型| 手心有痣代表什么| 唐僧真名叫什么| 悦己是什么意思| 牙疼吃什么食物| 踮脚有什么好处| 傍家儿是什么意思| 寻麻疹看什么科| 铁皮石斛花有什么作用| 浅表性胃炎吃什么药效果好| 什么不迫| 青春永驻什么意思| 脂肪瘤吃什么药| 12583是什么电话| 坚贞不渝是什么意思| 为什么油耳朵就有狐臭| 恐龙什么时候灭绝的| 小肚子疼吃什么药| 快递已揽件是什么意思| 赤脚医生是什么意思| inr是什么意思| 什么人不能吃人参| kda什么意思| 羊奶和牛奶有什么区别| 健身吃蛋白粉有什么好处和坏处| 郑板桥是什么生肖| 3.2号是什么星座| 胃糜烂要吃什么药| vcr什么意思| 胃热吃什么药| 多读书有什么好处| 土的行业有什么工作| 2月2号是什么星座| 嗓子疼喝什么饮料| 来事吃什么水果好| 阴瑜伽是什么意思| 尿性什么意思| 梦见大火烧房子是什么意思| 什么如什么| 肠胃不好经常拉肚子吃什么药| 什么检查需要空腹| 一什么河| 驳是什么意思| 钮祜禄氏现在姓什么| 爬山虎是什么茎| 生化妊娠是什么原因导致的| 子宫肌瘤什么症状| 性格好的女生是什么样| smt是什么意思| 什么品牌的奶粉最好| 黄油是什么意思| 舌头发白吃什么药好| 自闭是什么意思| 登门拜访是什么意思| 肉是什么结构的字| 阴囊瘙痒用什么药膏| 为什么会得飞蚊症| 孕妇梦见别人怀孕是什么意思| 超敏c反应蛋白偏高说明什么| 插班生是什么意思| 去草原穿什么衣服拍照好看| 肚子疼应该吃什么药| 湖南简称什么| 独家记忆是什么意思| 五月初是什么星座| toshiba是什么牌子| 小腿发痒是什么原因| 身不由己是什么生肖| 做爱是什么感觉| 尿少尿黄是什么原因引起的| 尿血吃什么消炎药| 补气固表什么意思| 呓语是什么意思| 感康是什么药| 白电油对人体有什么危害| 黄体破裂是什么原因造成的| 头发染什么颜色显皮肤白显年轻| 黄金属于五行属什么| 造影是检查什么| 说一个人轴是什么意思| 喝什么饮料解酒| 吃黑芝麻有什么好处| 獭读什么| 猪男和什么属相最配| 前列腺增大有什么危害| crn什么意思| 能量是什么意思| 什么时候喝咖啡能减肥| 烤麸是什么| svip是什么意思| 甲状腺功能三项查什么| 金水宝胶囊有什么作用| 蛋白粉什么时候喝效果最好| 液蜡是什么| 打呼噜挂什么科室| 心肌缺血是什么原因| 黑曼巴是什么意思| 包皮发炎用什么药| 四叶草代表什么意思| 新生儿什么时候剪头发| 2001年是什么年| 小姨的女儿叫什么| 肌张力障碍是什么病| 什么是云母| 噗噗是什么意思| 大惊小怪是什么意思| 健脾去湿吃什么药| 棕色是什么颜色| 鸡蛋加什么吃壮阳持久| 老枞是什么茶| 耳仓为什么是臭的| 日光性皮炎用什么药膏最有效| 心慌心跳吃什么药| 葡萄糖偏高有什么问题| 爱情是什么| 什么是芥菜| 早谢是什么症状| 晟怎么读音是什么| 检查胸部应该挂什么科| 日进斗金什么意思| 初中毕业可以考什么证| 更迭是什么意思| 3月9日什么星座| 草缸适合养什么鱼| 西洋参跟花旗参有什么区别| 多彩的什么| 肛门坠胀吃什么药| 胸膈痞闷是什么症状| 今天穿什么| 年上年下是什么意思| 四川属于什么气候| 小猫不能吃什么| 麻豆是什么意思| 软组织挫伤是什么意思| 杀虫剂中毒有什么症状| jsdun是什么牌子的手表| 姑姑的老公叫什么| 拔完牙能吃什么| 医院建档是什么意思| 继发性闭经是什么意思| crp是什么意思| 3月4日是什么星座| 做完雾化为什么要漱口| 什么是隐血| 苏字五行属什么| 菩提什么意思| 什么炒肉好吃| 立加羽念什么| 紫砂壶泡什么茶最好| 1939年属什么| 迁移宫代表什么| 梦见屎是什么预兆| kipling是什么牌子| 移植后可以吃什么水果| 天蝎座有什么特点| 女神是什么意思| 红疮狼斑是什么引起的| 农历六月初十是什么日子| 尿路感染要吃什么药| 吃榴莲对女人有什么好处| 肾气不足吃什么药好| 笑气是什么东西| 灯笼裤配什么鞋子好看| 佛跳墙是什么| 张牙舞爪的张是什么意思| 汉朝后面是什么朝代| 浅笑嫣然是什么意思| 什么叫抗氧化| 靠谱是什么意思| 生化是什么原因引起的| 格桑花的花语是什么| 64年属什么| 玑是什么意思| 什么叫手足口病| 蚊子讨厌什么气味| 男生剪什么发型好看| 色素沉着有什么办法可以去除| 荷叶加什么减肥最快| 胃气胃胀吃什么药最好| 什么是宫寒| 阴道有腥臭味用什么药| 中秋节送什么水果好| 蒹葭苍苍是什么意思| 磋商是什么意思| 不值一提是什么意思| 怀孕初期有什么表现| ngu是什么意思| 肾结石吃什么好| 农历十月是什么月| 什么是直接胆红素| 煎中药用什么锅| 肝火旺吃什么药| 谦虚的什么| 七月十三号是什么星座| 紫花地丁有什么功效| 头皮疼是什么原因| 磨牙齿是什么原因| 王源粉丝叫什么| 酸辣土豆丝用什么醋| 白色病变是什么病| 那的反义词是什么| 8月15号是什么星座| SS是什么| 证过二是什么意思| 什么是鸡奸| 长期吃优甲乐有什么副作用| 蜈蚣是什么生肖| fs是什么单位| 动脉硬化吃什么| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 综合技术 ? 测试测量 ? 可选的指令集扩展---MIPS的发展历程

共1条 1/1 1 跳转至

可选的指令集扩展---MIPS的发展历程

高工
2025-08-04 14:05:57     打赏
MIPS的演化
  MIPS16是一个1997年面世的可选的指令集扩展,它能减少二进制程序尺寸的30-40%。实现者希望这种CPU能够在很关心代码尺寸的场合中更有吸引力--这种场合通常就是指低成本系统。由于只应用于特定实现,它是一个多厂商标准:LSI, NEC和Philips都生产支持MIPS16的CPU。
  
  使MIPS二进制代码比其他架构的并不是MIPS指令集干的活少了, 而是他们的尺寸更大一些--每个指令4字节长,相比之下某些CISC架构一般平均只有3个字节。
  
  MIPS增加了一种模式,在这种模式下CPU可以对16位固定大小的指令进行解码。大多数MIPS16指令扩展成正常的MIPS III指令,所以很明显这将是一个相当受限制的指令子集。窍门就在于使这个子集对足够多的程序充分的进行高效编码,以使整个程序的大小得到大大的压缩。
  
  当然,16位指令并不会使其变成一个16位指令集。MIPS16 CPU是实际存在的带有32位或者64位寄存器的的CPU,MIPS16 CPU的运算也都在这些寄存器上。
  
  MIPS16远不是一个完整的指令集―例如它既没有CPU控制指令,也没有浮点运算指令。但没有关系,因为每一个MIPS16 CPU也必须要运行完整的MIPS ISA。你能运行MIPS16和正常的MIPS代码的混合指令。每个函数调用或者跳转-寄存器指令都能改变运行模式。
  
  1.并不是MIPS发明了提供一种可选的使部分指令只有一半大小的创意。Advanced RISC Machine(ARM)公司的Thumb版本的ARM CPU首先提出这个想法的。
  
  在MIPS16中把指令地址编码成最低有效位(Least Significant Bit, LSB)模式是既方便又高效的。MIPS16指令必须偶字节对齐,所以bit 0不再是指令指针(instruction pointer, 就是程序计数器PC)的组成部分了;取而代之的是,每条跳到奇数地址的指令开始执行MIPS16,每条跳到偶数地址的指令回到正常的MIPS。MIPS子程序调用指令jal的目标地址总是字对齐的,所以新指令jalx隐藏了指令的模式间转换。
  
  为了把指令压缩到一半大小,对于大多数指令我们只分配了3 bit来选择寄存器,这样只有8个通用寄存器允许自由访问;在许多MIPS指令中可以见到的16 bit常数域也被压缩,通常变成了5 bit。许多MIPS16指令只指明两个寄存器,而不是三个。另外,还有一些特别的编码规则将在下一节描述。
  
  D.1.1 MIPS16中的特殊编码格式和指令
  被缩减的通用指令没有什么问题,但有两个特定的弱点会加大程序尺寸;5 bit的立即数域构造常量是不够的,在load/store操作中也没有足够的地址范围。三种新的指令和一种特别规定有助于解决这些问题。
  
  extend是一条特殊的MIPS16指令,它由5 bit的代码和11 bit的域构成。这个11 bit的域可以和后续指令中的立即数域相连接,这样就允许使用一个指令对来对16 bit立即数编码。这条指令在汇编语言中看起来就像一个指令前缀。
  
  装载(load)常量在正常的MIPS模式下都需要额外的指令,在MIPS16模式下更是巨大的负担;把常量放在内存中然后再读它们会更快一些。MIPS16对相对于指令自身位置的装载操作(PC-relative loads, PC相关装载)增加了支持,允许常量被嵌到代码段中(典型情况就是在函数的起始处前面)。这些是仅有的不是严格对应于正常的MIPS指令的MIPS16指令―MIPS没有PC相关的数据操作。
  
  许多MIPS load/store操作是直接在栈帧(stack frame)里,$29/mp可能是最普通的基寄存器。MIPS16定义了一组隐式使用mp的指令,允许我们把函数的栈帧引用地址也编进去而不需要一个分离的寄存器域。
  
  MIPS的Load指令总是生成32位的全地址。由于装载字(load word)指令只有当地址是4的倍数是才合法,最低两位就被浪费了。MIPS16的Load指令是可以伸缩的:地址的偏移量会根据被load/store的对象的大小左移,这样就增加了指令中可用的地址范围。
  
  作为一种额外的应急机制,MIPS16定义了一些指令,允许在8个MIPS16可访问的的寄存器中的一个与32个MIPS通用寄存器中的任何一个间任意做数据移动。
  
  D.1.2 对MIPS16的评价
  
  MIPS16对于汇编语言编程来说不是一种合适的语言,我们也不准备对它详细说明。这些是编译器的工作。大多数使用MIPS16模式编译的程序的尺寸都会缩小到用MIPS模式编译的 60-70%。MIPS16比32位CISC架构的代码更紧凑,和ARM的Thumb代码差不多,和纯16位CPU相比相当有竞争力。
  
  但是没有免费的午餐;MIPS16程序可能比MIPS增加40-50%的指令。这意味着在CPU核上运行一个程序会多用40-50%的时钟周期。但是低端CPU经常主要被存储器所限制,而不是被CPU核所限制。较小的MIPS16程序需要较低的带宽来取指令,这样就得到更低的cache缺失率。在cache很小并且程序的存储器有限时,MIPS16将会弥补差距,还有可能要重新改写正常的MIPS代码。
  
  由于性能的降低,MIPS16代码在有大的存储器资源和很宽总线的计算机中没有吸引力。这就是为什么它只是一种可选扩展的原因。
  
  在应用范围的另一端, MIPS16将会与软件压缩技术展开竞争。在放进ROM存储器之后,使用通常的文件压缩算法压缩的正常MIPS程序将会比未压缩的同等MIPS16代码小,而稍大于压缩过的MIPS16同等代码(注1);如果你的系统拥有足够的内存能够把ROM当做文件系统使用,而把代码解压缩到RAM中执行,那么全ISA软件解压很可能会带来更好的总体性能。
  
  也有这样一种趋势来构造系统,那就是大量使用以字节编码的解释语言(Java或者它的后续者)来书写大量在时间上要求不严格的程序。那种中间代码非常小,在尺寸方面比任何二进制机器码都高效的多。如果只有解释器和一些对性能要求严格的程序留在机器中ISA中,那么更密集的指令集编码格式将只会影响程序的一小部分。当然解释器(特别是Java)本身会非常大,但是应用复杂度的无情增长将很快使它减少重要性。
  
  我预料在1998-2003年将会看到MIPS16小范围的应用于低能量、小尺寸和成本受限制的系统中。它还是值得发明的,因为有些系统―比如”智能”移动电话―可能会大量生产。
  
  1.更密集的编码格式在使用上比压缩算法有更低的冗余度。
  
  D.2 MIPSV/MDMX
  MIPS V和MDMX是在1997年早些时候一起公布的。它们本来是为一种新的准备在1998年发布MIPS/SGI的CPU中的指令而设计的。但是那个CPU后来被取消了,关于它们的未来存在疑问。
  
  二者都是为了克服一些已知的传统指令集的不足,这些不足是在ISA面向多媒体应用中产生的。象软调制解调器的语音编/解码、或流媒体应用、或图像/视频的压缩/解压缩这样的任务采用一些过去只有专用数字信号处理器(digital signal processor, DSP)才用的数学算法。在这种计算等级,多媒体任务通常都包括重复进行一些对大向量或者数组数据的相同操作。
  
  在基于寄存器的机器内部,通常采用的方案是把多媒体数据项封装到一个机器寄存器中,然后执行一条寄存器-寄存器指令,这条指令对于每个寄存器中的每个域做同样的工作。这是一种非常明显的并行处理形式,被称为单指令,多数据(single instruction, multiple data. SIMD)。
  
  这个想法首先见于一款Intel的业已消失的i860架构的微处理器(circa 88)中。作为对Intel x86指令集进行扩展的MMX在1996年投放市场后,SIMD重新登场时更加引人注目。
  
  MDMX对操纵在一个64位寄存器中8x8-bit的整数组提供了一组操作,这些操作能够对所有的8小片做同样的事情。这些指令包括通常的算术操作(加,减,乘),也有乘法-累加指令能把结果放在一个巨大的累加器中,这个累加器有足够的精度防止溢出。
  
  由于这些指令被用于特定数据类型被相当清楚的从正常的程序变量分离开来的场合中,MDMX指令集与浮点寄存器一起工作就变得有意义。以这种方式重复利用现有的寄存器意味着现有的操作系统不需要改变(在任务切换时操作系统已经保存和恢复浮点寄存器了)。
  
  与MDMX相似,Intel的MMX为封装进一个64bit的8个8bit数提供了”octibyte”八路(eight-way)指令。MIPS MDMX也定义了4x16位(四个短整数操作)和2x32位(两个字操作)格式,但是早期的情况是一些MDMX实现可能认定octibyte格式和指令足够了。
  
  当对8bit的数做算术运算时, 结果经常下溢和上溢。如果我们必须为众多的溢出测试条件编写处理程序,那么多媒体应用的性能将不会得到提高。而只简单截去最大的和最小的数(对于无符号8-bit数来说,就是255和0)的上溢和下溢结果,对于机器运算来说会更加有帮助。这个处理过程叫做”饱和”(saturating)算法。MDMX拥有这种能力。
  
  这就给我们带来了MIPS V。尽管从名字上看好像意思是指一个升级的指令集--就像MIPS I到IV那样,MIPS V在浮点领域跟MDMX很相似,提供了paired-single操作。paired-single对一对被封装进64-bit的浮点寄存器中的单精度数做两次FP动作。
  
  MIPS V没有MDMX那么古怪;MIPS IV包含了一个相当广泛的浮点运算集合,并且直接为其中的绝大部分提供了paired-single版本的指令;甚至成对比较(paired-compare)也可以做到,这是因为MIPS IV的CPU已经有了多个浮点条件位来接收结果。但MIPS V没有提供复杂多周期指令的成对操作版本的指令,这些多周期指令会需要非常多新的资源(例如没有求平方根和除法)。
  
  D.2.1 编译器能用多媒体指令吗?
  引入SIMD多媒体指令的原因和70年代晚期以前在超级计算机中提供向量处理单元的原因相似。很容易为向量处理器构造一个手工矩阵算术包。而用向量运算来编译一个用高级语言写成的程序就难得多了,尽管超级计算机提供商在这上面也取得一些成果。通常这些成果都集中在Fortran上;对于常规编程来说语义上的弱点使Fortran成为一种可怜的语言,但是这让它变成了一种很容易优化的语言 



关键词: 可选     指令     扩展     ---MIPS     发展     历程     MI    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
始祖鸟什么档次 尊字五行属什么 聊表心意是什么意思 眉目传情什么意思 咖啡加奶有什么坏处和好处
铁剂不能和什么一起吃 什么情况下需要安装心脏起搏器 金砖国家是什么意思 商是什么 酒后打嗝是什么原因
今天穿什么 科技布是什么材质 r表示什么 什么树叶 糖异生是什么意思
抽血血液偏黑什么原因 心肌缺血是什么原因造成的 洁面液是干什么用的 口腔异味吃什么药 凤毛麟角什么意思
明胶是什么hcv9jop1ns1r.cn 杏鲍菇炒什么好吃qingzhougame.com bossini是什么牌子hcv9jop2ns6r.cn 狗为什么吐舌头hcv9jop6ns0r.cn 蔬菜有什么hcv8jop6ns8r.cn
肽是什么东西hcv8jop0ns5r.cn 午睡睡不着是什么原因hcv8jop4ns6r.cn 骨龄挂什么科baiqunet.com 吃什么蛋白质含量最高hcv8jop8ns8r.cn 止血敏又叫什么hcv8jop0ns7r.cn
血脂高看什么指标hcv7jop5ns1r.cn 黄茶适合什么人喝hcv9jop0ns0r.cn 为什么会得子宫肌瘤hebeidezhi.com 做面包用什么面粉hcv9jop0ns1r.cn 孩子吃什么容易长高hcv8jop0ns1r.cn
潇字五行属什么hcv9jop3ns6r.cn 眉飞色舞是什么意思hcv8jop1ns1r.cn 吃什么对牙齿好hcv9jop5ns3r.cn 苹果什么时候吃最好xinjiangjialails.com 病毒的繁殖方式是什么adwl56.com
百度