经常眩晕是什么原因引起的| 麻烦别人说什么礼貌用语| 农村补贴什么时候发放| 12305是什么电话| 间接是什么意思| 儿童热感冒吃什么药| bell什么意思| 什么是阴虱| 北方人立秋吃什么| 非农业户口是什么意思| 远房亲戚是什么意思| 四月十五日是什么日子| 马女和什么属相最配| 怀孕可以喝什么饮料| 人中起痘痘是什么原因| 有何特长一般填什么好| 闰年是什么| 胃酸多吃什么药| 特需号是什么意思| 发瘟是什么意思| ami是什么牌子| 婕字五行属什么| 为什么不建议做肠镜| 康复治疗是做什么的| 白醋泡脚有什么功效| 吃什么促进恶露排干净| 为什么水晶要消磁| 年轻人为什么会低血压| 高压是什么意思| 血压低有什么危险| 头骨凹陷是什么原因| 咳嗽嗓子有痰吃什么药| 脱肛是什么| 智商高的人有什么特征| tpo是什么意思| 蜗牛吃什么食物| 轻如鸿毛是什么意思| 初七是什么日子| 来月经吃什么排得最干净| 早上起床眼屎多是什么原因| 为什么蚊子要吸血| 刚出生的宝宝要注意什么| 考试吃什么早餐| 也许是什么意思| 司空见惯的惯是什么意思| 凋谢是什么意思| 什么叫皈依| 门槛是什么意思| 上头了是什么意思| 梦见滑雪是什么意思| 越字五行属什么| 肠溶片和缓释片有什么区别| 什么是托特包| 什么的假山| 什么粥减肥效果好| 八月节是什么节| 冬天喝什么茶好呢| 三月三十号是什么星座| 包公是什么意思| 额头上长痘痘是什么原因| 白帆是什么| 胃幽门螺旋杆菌吃什么药效果好| 犀利是什么意思| louis是什么意思| 尿黄尿味大难闻是什么原因| 缺钙吃什么| 益生菌什么牌子最好| 香港电话前面加什么| tg是什么| 额头发黑是什么原因| 4月4日什么星座| 人心是什么意思| 血氨高会导致什么后果| 漱口杯什么材质好| 特警力量第二部叫什么| 梦见野猪是什么预兆| 十二指肠胃溃疡吃什么药| 梦见自己掉牙是什么意思| 獐子是什么动物| 秋葵什么时候播种| 胃难受吃什么食物好| 喝苹果醋有什么好处和坏处| 组织部长是什么级别| 肛门痒挂什么科| 舌头发紫是什么原因| 乙肝抗体是什么意思| 二甲双胍缓释片什么时候吃最好| 三个龙念什么| 姑爷是什么意思| 京五行属什么| 保家仙是什么| 检出限是什么意思| 开心果为什么叫开心果| 脚踩按摩垫有什么好处| 肌酐高有什么症状表现| 每天流鼻血是什么原因| 金是什么结构的字| 启字五行属什么| ear什么意思| 神采什么| 大便带血是什么原因| 石斛能治什么病| 鸡咳嗽吃什么药| 洋葱有什么好处| 喝玉米水有什么好处| 为什么家里有蚂蚁| 男人为什么会晨勃| 减肥晚上适合吃什么水果| 候车是什么意思| 白加黑是什么颜色| 男人梦到掉牙什么预兆| 用盐泡脚有什么好处| 人口基数是什么意思| 死党是什么意思| 吹空调咳嗽是什么原因| 鸡蛋胶是什么鱼胶| 11月份生日是什么星座| 辐照食品什么意思| 卧底大结局是什么| 什么尾巴长不了| 6月13号是什么星座| 脚有点浮肿是什么原因| 子宫多发肌瘤是什么意思| 脚底脱皮是什么原因| 6合是什么生肖| 身体怕热是什么原因| 一九三九年属什么生肖| 喝什么解酒快| 恐惧是什么意思| 多心是什么意思| 护肝养肝吃什么药最好| 后脑勺白头发多是什么原因| 什么是处女膜| bbq是什么| 8月份什么星座| 6541是什么药| 什么是脂溢性脱发| 支气管炎吃什么好| 多汗症挂什么科| 甲亢甲减有什么症状| 海螺吃什么| rm是什么币| 香菜什么时候种最合适| ct腹部平扫能检查什么| 尿常规红细胞高是什么原因| 一什么木瓜| 什么情况下安装心脏起搏器| dr是什么意思| 间质性肺病是什么意思| 修复胃粘膜吃什么药| 长期胃胀气什么原因| 胃酸吃什么能缓解| 佛家思想的核心是什么| 艾草治什么病| 摆地摊卖什么最赚钱而且很受欢迎| 相生什么意思| 白茶什么季节喝好| 支气管炎能吃什么水果| 头孢不能和什么一起吃| 马克定食是什么意思| 腰疼不能弯腰是什么原因引起的| 666代表什么意思| cst是什么时间| 四叶草代表什么意思| 3月份生日是什么星座| 责成是什么意思| 胃嗳气是什么原因| 今年什么时间进伏| 2倍是什么意思| 眼睛发痒是什么原因| hlh是什么病| 阿魏酸是什么| ask是什么意思| 过敏性鼻炎用什么药效果好| 天蝎女跟什么星座最配| 娃儿发烧用什么方法退烧快| 眼压高是什么原因造成的| 开眼镜店需要什么条件| 并发是什么意思| 负离子是什么| 什么是白内障| 恋爱观是什么| 龟奴是什么| 洗发水什么牌子好| 胃溃疡是什么原因引起的| 蝉联什么意思| 待我长发及腰时下一句是什么| 逍遥丸主治什么病| 梦见牛肉有什么征兆| 亥时右眼跳是什么预兆| rom是什么意思| 葬礼穿什么衣服| 犹太人为什么那么聪明| 气血不足吃什么水果| 拉黑色的屎是什么原因| 尿里有红细胞是什么原因| 怀孕第一个月吃什么对胎儿好| 梦见死去的姥姥是什么意思| 至加秦是什么字| 脑白质脱髓鞘是什么意思| 6个月宝宝可以吃什么水果| 应届生是什么意思| 西红柿和番茄有什么区别| 浑身乏力什么病的前兆| 酒糟是什么东西| 现在开什么实体店赚钱| 口干口臭是什么原因引起的| 梦见洗头发是什么意思| 阿咖酚散是什么药| 急功近利什么意思| 手热脚凉是什么原因| 吃绿豆有什么好处| 法图麦在回族什么意思| 冬菜是什么菜| 梦见下大雨是什么意思| 硒中毒有什么症状| 特长是什么| 头晕出虚汗是什么原因引起的| 11.28什么星座| 生姜和红枣煮水喝有什么作用| 1956年属什么生肖| 暗经是什么意思| 劳改是什么意思| 什么是一体机| 银装素裹是什么意思| 浅蓝色配什么颜色好看| 乳腺靶向检查是什么| 抱窝是什么意思| 尿潜血是什么病| 锦衣夜行什么意思| 来大姨妈喝什么汤比较好| 尿道炎是什么引起的| 马刺是什么| 做梦梦到地震预示着什么| 猫抓病是什么病| 肝胆湿热用什么药| 羊蝎子是什么东西| 乞巧节是什么节| 维生素d3吃多了有什么副作用| 神助攻什么意思| stranger什么意思| eb病毒抗体阳性是什么意思| 尿葡萄糖高是什么原因| 胸闷是什么原因引起的| 右下眼皮跳是什么预兆| 阴毛变白什么原因| 早醒是什么原因| 老板喜欢什么样的员工| 自缢是什么意思| 怀孕第一天有什么症状| 龙的五行属性是什么| 父亲节送爸爸什么礼物| 什么叫蜘蛛痣| 胃出血吃什么药好| 大便有点绿色是什么原因| 梦到鳄鱼是什么意思| 红斑狼疮的症状是什么| 走路腰疼是什么原因| 为什么会得玫瑰糠疹| 饭后胃胀吃什么药| k开头的是什么车| 黑色属于什么五行属性| 什么的成长| 早年晚岁总无长是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 综合技术 ? 测试测量 ? 可选的指令集扩展---MIPS的发展历程

共1条 1/1 1 跳转至

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

高工
2025-08-05 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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
口干舌燥吃什么中成药 什么是高钾血症 肌酸是什么 相向是什么意思 10月15日什么星座
后脑两侧痛是什么原因 在什么的前面用英语怎么说 为什么医院不用咳特灵 人在囧途是什么意思 胃食管反流挂什么科
假释是什么意思 甲状腺吃什么盐好 牙齿痛吃什么药好 网盘是什么 心律不齐是什么原因引起的
猹是什么 为什么前壁容易生男孩 10月26日什么星座 fsa是什么意思 番茄和蕃茄有什么区别
失恋是什么意思hcv8jop5ns8r.cn 炉甘石是什么hcv7jop5ns4r.cn nb是什么意思hcv8jop0ns7r.cn 东南方向是什么位置hcv8jop0ns0r.cn 黑指甲是什么症状图片hcv8jop8ns1r.cn
太阳鱼吃什么食物hcv9jop4ns9r.cn 什么人容易高反hcv9jop1ns3r.cn 低血糖不能吃什么食物hcv9jop2ns6r.cn 0.01是什么意思youbangsi.com 红绿蓝混合是什么颜色hcv8jop9ns7r.cn
海尔兄弟叫什么hcv9jop3ns8r.cn 想起我叫什么了吗hlguo.com 梦见狗是什么预兆weuuu.com 无什么无什么hcv9jop1ns6r.cn 东京热是什么beikeqingting.com
水晶眼镜对眼睛有什么好处hcv9jop1ns3r.cn 25年是什么婚hcv9jop4ns1r.cn 钟点房是什么意思hcv9jop4ns1r.cn 终身是什么意思hcv8jop1ns0r.cn vt是什么hcv8jop9ns0r.cn
百度