時(shÃ)間:2019-05-29 17:22:09來(lái)æºï¼šé›»å發(fÄ)燒å‹ç¶²(wÇŽng)
å°(duì)于嵌入å¼è»Ÿä»¶è€Œè¨€ï¼Œä»£ç¢¼å°ºå¯¸æ˜¯è¶Šå°è¶Šå¥½ã€‚å£“ç¸®ä»£ç¢¼ä»¥é©æ‡‰(yÄ«ng)å—åˆ°æˆæœ¬æˆ–空間é™åˆ¶çš„å˜å„²(chÇ”)å系統(tÇ’ng)已經(jÄ«ng)æˆç‚ºåµŒå…¥å¼ç³»çµ±(tÇ’ng)é–‹(kÄi)發(fÄ)çš„ä¸€é …(xià ng)é‡è¦äº‹å‹™(wù)。ARMã€MIPSã€IBM以åŠARC都æä¾›äº†é™ä½Žå˜å„²(chÇ”)器å 用的技術(shù),本文將å°(duì)這幾種架構(gòu)ä¸ä»£ç¢¼å£“縮技術(shù)的實(shÃ)ç¾(xià n)進(jìn)行比較分æžã€‚
如今,å˜å„²(chÇ”)å系統(tÇ’ng)çš„æˆæœ¬é«˜äºŽå¾®è™•ç†å™¨å·²ä¸å†ç¨€å¥‡ã€‚å› æ¤ï¼Œé¸æ“‡ä¸€æ¬¾èƒ½ç¯€(jié)ç´„å˜å„²(chÇ”)æˆæœ¬çš„處ç†å™¨å°±è®Šå¾—很有æ„義。編寫(xiÄ›)ç·Šæ¹Šçš„ä»£ç¢¼åªæ˜¯äº‹æƒ…的一個(gè)æ–¹é¢ï¼Œè€Œè™•ç†å™¨çš„æŒ‡ä»¤é›†å°(duì)å˜å„²(chÇ”)å™¨çš„æ¶ˆè€—åŒæ¨£å½±éŸ¿å¾ˆå¤§ã€‚å°(duì)于代碼密度很差的處ç†å™¨è€Œè¨€ï¼Œç„¡(wú)論怎樣絞盡腦æ±åœ°åŽ»å£“ç¸®ä½ çš„Cæºä»£ç¢¼éƒ½äºŽäº‹ç„¡(wú)補(bÇ”)ã€‚å¦‚æžœä½ é—œ(guÄn)注å˜å„²(chÇ”)å™¨çš„æ¶ˆè€—ï¼Œé¸æ“‡æ°ç•¶(dÄng)?shù)å¥¶å¹šç ¥éž‘â’•î‚æ¼{(dià o)整代碼是明智的。
并䏿˜¯æ‰€æœ‰çš„處ç†å™¨éƒ½æ“有或需è¦ä»£ç¢¼å£“ç¸®ï¼Œåªæœ‰32ä½çš„RISC(精簡(jiÇŽn)指令集計(jì)算機(jÄ«))處ç†å™¨éœ€è¦ä»£ç¢¼å£“ç¸®ï¼Œå› ?yà n)镽ISC處ç†å™¨ä»£ç¢¼å¯†åº¦è¼ƒå·®ã€‚RISC處ç†å™¨åœ¨éŽ(guò)去是è¨(shè)計(jì)用于通用計(jì)算機(jÄ«)和工作站,在其è¨(shè)計(jì)時(shÃ)èª(rèn)為å˜å„²(chÇ”)器價(jià )æ ¼ä¾¿å®œã€‚ç›¡ç®¡å˜å„²(chÇ”)器價(jià )æ ¼å¯èƒ½ä¾¿å®œï¼Œä½†å¦‚果能å 用更少的å˜å„²(chÇ”)噍䏿˜¯æ›´ä¾¿å®œå—Žï¼Ÿå°(duì)于蜂窩電話(huà )以åŠå…¶ä»–æˆæœ¬æŽ§åˆ¶åš´(yán)æ ¼çš„åµŒå…¥å¼ç³»çµ±(tÇ’ng)應(yÄ«ng)用而言,在RAM或ROM上5ç¾Žå…ƒçš„æˆæœ¬å·®ç•°ï¼Œå°±èƒ½å°Ž(dÇŽo)致é‡ç”¢(chÇŽn)時(shÃ)利潤(rùn)的巨大差別。通常,å˜å„²(chÇ”)å™¨çš„å¤§å°æ˜¯å›ºå®šçš„,而產(chÇŽn)å“的功能特性å»å„異。緊湊的目標(biÄo)代碼æ„味著å¯ä»¥å¯¦(shÃ)ç¾(xià n)更多的自動(dòng)撥號(hà o)ã€æ›´å¥½çš„語(yÇ”)音è˜(shÃ)別能力,或者å¯èƒ½æ˜¯æ›´æ¸…æ™°çš„å±å¹•顯示。
在32ä½åµŒå…¥å¼è™•ç†å™¨ä¸ï¼ŒARMã€MIPS以åŠPowerPC曾是首先尋找出é™ä½Žå…¶å˜å„²(chÇ”)å™¨æ¶ˆè€—ã€æé«˜ä»£ç¢¼å¯†åº¦æ–¹æ³•çš„å¹¾ç¨®è™•ç†å™¨ã€‚更早一些的處ç†å™¨ï¼Œå¦‚摩托羅拉的68k系列以åŠè‹±ç‰¹çˆ¾çš„x86系列,并ä¸éœ€è¦ä»£ç¢¼å£“縮。事實(shÃ)上,其標(biÄo)準(zhÇ”n)代碼密度都比RISC處ç†å™¨çš„代碼壓縮模å¼é‚„è¦é«˜ã€‚
易于使用的Thumb技術(shù)
我們先從ARM的代碼壓縮方案(Thumb)è¬›èµ·ï¼Œå› ?yà n)æ§ æ¶«è¤‚è„§Væ³›ã€æœ‰å¾ˆå¥½çš„æ”¯æŒï¼Œæ˜¯ä¸€å€‹(gè)典型處ç†å™¨ä»£ç¢¼å£“縮方案,并相當(dÄng)ç°¡(jiÇŽn)æ½”ã€æœ‰æ•ˆã€‚
Thumb實(shÃ)éš›ä¸Šæ˜¯æ·»åŠ åˆ°ARM的標(biÄo)準(zhÇ”n)RISC指令集之上的ç¨(dú)ç«‹æŒ‡ä»¤é›†ã€‚åœ¨ä½ çš„ä»£ç¢¼ä¸ï¼Œä½ å¯ä»¥é€šéŽ(guò)ä¸€æ¢æ¨¡å¼åˆ‡æ›æŒ‡ä»¤åœ¨é€™å…©ç¨®æŒ‡ä»¤é›†ä¹‹é–“進(jìn)行切æ›ã€‚Thumb指令集架構(gòu)(InstructionSetArchitecture,ISA)是由大約36æ¢16使Œ‡ä»¤çµ„æˆï¼Œåƒ…é 這些指令是完æˆä¸äº†å¤ªå¤šä»»å‹™(wù)的,但ThumbæŒ‡ä»¤é›†åŒ…æ‹¬äº†åŸºæœ¬çš„åŠ æ³•ã€æ¸›æ³•ã€å¾ªç’°(huán)ç§»ä½ä»¥åŠè·³è½‰(zhuÇŽn)指令。通éŽ(guò)使用這些較çŸçš„æŒ‡ä»¤æ›¿æ›ARM標(biÄo)準(zhÇ”n)çš„32使Œ‡ä»¤ï¼Œå¯ä»¥å°‡æŸäº›ä»£ç¢¼çš„è¦(guÄ«)模減å°å¤§ç´„20%到30%。但有一些å•(wèn)題需è¦å¼•起注æ„:
首先,Thumb代碼和標(biÄo)準(zhÇ”n)ARM代碼ä¸èƒ½æ··é›œä½¿ç”¨ï¼Œå¿…é ˆé¡¯å¼åœ°åœ¨å…©ç¨®æ¨¡å¼é–“進(jìn)行切æ›ï¼Œå°±å¥½åƒThumb是一套完全ä¸åŒçš„æŒ‡ä»¤é›†(實(shÃ)際上也是)。這迫使程åºå“¡å°‡æ‰€æœ‰çš„16ä½ä»£ç¢¼èˆ‡32ä½ä»£ç¢¼åˆ†é–‹(kÄi)并隔離到ç¨(dú)立的模塊ä¸ã€‚
其次,由于Thumb是經(jÄ«ng)éŽ(guò)ç°¡(jiÇŽn)化和精簡(jiÇŽn)的指令集架構(gòu),在Thumb模å¼ä¸ç„¡(wú)æ³•å®Œæˆæ‰€æœ‰ä½ 希望的工作。Thumb模å¼ç„¡(wú)法進(jìn)行諸如處ç†ä¸æ–·ã€é•·(zhÇŽng)跳轉(zhuÇŽn)ã€åŽŸåå˜å„²(chÇ”)器(atomicmemory)æ“作,或å”(xié)處ç†å™¨æ“作ç‰ã€‚Thumb有é™çš„æŒ‡ä»¤æ„味著僅å°(duì)基本的算術(shù)å’Œé‚輯æ“ä½œæœ‰ç”¨ï¼Œå…¶ä»–çš„ä»»ä½•å·¥ä½œå¿…é ˆä½¿ç”¨ARM的標(biÄo)準(zhÇ”n)32使Œ‡ä»¤é›†ä¾†(lái)完æˆã€‚
Thumbçš„é™åˆ¶ä¸åƒ…表ç¾(xià n)在指令集上,當(dÄng)處于Thumb模å¼ä¸ï¼ŒARM處ç†å™¨å°‡åƒ…有8個(gè)寄å˜å™¨(è€Œä¸æ˜¯16個(gè)),這些寄å˜å™¨ç„¡(wú)æ³•åƒæ¨™(biÄo)準(zhÇ”n)模å¼ä¸‹ARM代碼那樣進(jìn)行æ¢ä»¶åŸ·(zhÃ)è¡Œå’Œç§»ä½æˆ–循環(huán)ç§»ä½æ“作。在標(biÄo)準(zhÇ”n)ARM代碼和Thumb代碼間進(jìn)è¡Œåƒæ•¸(shù)傳éžå¹¶ä¸å›°é›£ï¼Œåªè¦å°‡åƒæ•¸(shù)æ”¾åˆ°å †æ£§ä¸æˆ–通éŽ(guò)處ç†å™¨çš„å‰8個(gè)寄å˜å™¨å°±å¯ä»¥äº†ã€‚
從標(biÄo)準(zhÇ”n)模å¼åˆ°Thumb模å¼ä¹‹é–“的來(lái)回切æ›ä¹Ÿè¦æ¶ˆè€—時(shÃ)間,而且還è¦å¢žåŠ ä»£ç¢¼ã€‚æ¤å¤–,還需è¦å¹¾å個(gè)å‰å°Ž(dÇŽo)(preamble)以åŠåŽåŒæ¥æŒ‡ä»¤(postamble)來(lái)組織指é‡å¹¶æ¸…空CPUçš„æµæ°´ç·šã€‚如果在Thumb模å¼ä¸é‹(yùn)行的代碼å°äºŽå¹¾åæ¢æŒ‡ä»¤ï¼Œå°±ä¸å€¼å¾—為之付出這樣的開(kÄi)銷(xiÄo)。
最åŽï¼ŒThumbé‚„å°(duì)于性能有著少許的影響。通常,使用Thumb指令å°(duì)代碼進(jìn)行壓縮會(huì)å°Ž(dÇŽo)致代碼é‹(yùn)行速度é™ä½Žå¤§ç´„15%ï¼Œé€™ä¸»è¦æ˜¯ç”±äºŽåœ¨16使¨¡å¼å’Œ32使¨¡å¼é–“åˆ‡æ›æ‰€å¼•起的。Thumb指令還ä¸å¦‚32ä½çš„æ¨™(biÄo)準(zhÇ”n)æŒ‡ä»¤éˆæ´»ï¼Œå› æ¤ï¼Œå’Œ32ä½ä»£ç¢¼ç›¸æ¯”ï¼Œå¸¸å¸¸éœ€è¦æ›´å¤šçš„æŒ‡ä»¤ä¾†(lái)完æˆåŒæ¨£çš„å·¥ä½œã€‚å¾žç©æ¥µçš„一方é¢ä¾†(lái)說(shuÅ),由于其指令長(zhÇŽng)åº¦åªæœ‰32使Œ‡ä»¤é›†çš„一åŠï¼ŒThumb使得緩å˜çš„使用效率更高。
如果任務(wù)èƒ½å¤ åœ¨é€™äº›é™åˆ¶ä¸‹å®Œæˆï¼ŒThumbå¯ä»¥ç¯€(jié)ç´„ä¸å°‘æˆæœ¬ã€‚Thumb技術(shù)已經(jÄ«ng)得到æ¯ä¸€æ¬¾A(yù)RM處ç†å™¨çš„æ”¯æŒï¼Œç„¡(wú)論用戶(hù)使用與å¦ï¼Œå¤šæ•¸(shù)ARMç·¨è¯å™¨ä»¥åŠåŒ¯ç·¨ç¨‹åºéƒ½æ”¯æŒThumbæŒ‡ä»¤é›†ã€‚å› æ¤ï¼Œé‡‡ç”¨Thumb的體驗(yà n)應(yÄ«ng)該相當(dÄng)輕æ¾ã€‚
MIPS處ç†å™¨
ç†è§£äº†Thumb技術(shù)åŽï¼ŒMIPS16e就沒(méi)什么新奇的了。一些MIPS處ç†å™¨ä¸å¢žåŠ äº†å¦å¤–çš„16使Œ‡ä»¤é›†ï¼Œèˆ‡ARM系統(tÇ’ng)éžå¸¸é¡ž(lèi)似。MIPS16e指令集包括了一組16ä½çš„æ¨™(biÄo)準(zhÇ”n)MIPS算法ã€é‚輯以åŠè·³è½‰(zhuÇŽn)指令的簡(jiÇŽn)化版本。其使用和Thumb一樣,也需è¦åœ¨æ¨™(biÄo)準(zhÇ”n)模å¼å’ŒMIPS16e模å¼ä¹‹é–“來(lái)回切æ›ï¼Œé€™ä¹Ÿå°‡å°Ž(dÇŽo)致付出時(shÃ)é–“å’Œå¢žåŠ ä»£ç¢¼çš„é–‹(kÄi)銷(xiÄo)。除éžèƒ½åœ¨â€œå£“ç¸®â€æ¨¡å¼ä¸Šé‹(yùn)行相當(dÄng)é•·(zhÇŽng)時(shÃ)間,å¦å‰‡æ²’(méi)有必è¦é€²(jìn)行模å¼åˆ‡æ›ã€‚其代碼壓縮效率和ARMå·®ä¸å¤šï¼Œå°(duì)于多數(shù)程åºè€Œè¨€ï¼Œä¹Ÿæ˜¯20%到30%。
MIPS16eå’ŒThumb都ä¸èƒ½å°(duì)代碼進(jìn)行真æ£çš„å£“ç¸®ï¼Œå®ƒå€‘åªæ˜¯å°(duì)部分指令æä¾›äº†å¯æ›¿æ›çš„æ“ä½œç¢¼ï¼Œè€Œä¸”å¾—åˆ°çš„å£“ç¸®æ¯”æ˜¯ä¾è³´(là i)äºŽçŸæ“作碼和長(zhÇŽng)æ“作碼的總長(zhÇŽng)度的比值。也就是說(shuÅ),ä¾è³´(là i)于代碼所完æˆçš„任務(wù),諸如æ“作系統(tÇ’ng)å’Œä¸æ–·è™•ç†ä¾‹ç¨‹ç‰ç³»çµ±(tÇ’ng)ç´š(jÃ)ä»£ç¢¼æ ¹æœ¬å°±ä¸èƒ½ä½¿ç”¨16使Œ‡ä»¤ï¼Œå› æ¤ä¸èƒ½ç²å¾—代碼壓縮效果。一般的算法,åªè¦ä¸ä½¿ç”¨ä»»ä½•大æ“作數(shù),就能得到很好的壓縮效率。最åŽï¼Œåˆ¥å¿˜äº†æ•¸(shù)據(jù)是無(wú)法進(jìn)è¡Œå£“ç¸®çš„ï¼Œåªæœ‰ä»£ç¢¼èƒ½å¤ è¢«å£“ç¸®ã€‚å¦‚æžœä½ æ‡‰(yÄ«ng)用代碼ä¸åŒ…括了大é‡çš„éœæ…‹(tà i)數(shù)據(jù)çµ(jié)æ§‹(gòu),所能得到的總å˜å„²(chÇ”)器節(jié)約是éžå¸¸å°çš„。還有,15%的性能æå¤±ä¹Ÿè¨±å¾ˆä¸å€¼å¾—。å¦ä¸€æ–¹é¢ï¼ŒMIPS16eå’ŒThumb都是å…è²»(fèi)çš„(å‡å®šä½ 的處ç†å™¨å·²ç¶“(jÄ«ng)包å«äº†å®ƒå€‘),é¸ç”¨å®ƒå€‘çš„æˆæœ¬éžå¸¸ä½Žã€‚
PowerPC的CodePack技術(shù)
值得æå‰èªª(shuÅ)明的是,IBMçš„CodePack方法是å„種代碼壓縮技術(shù)䏿œ€å¾©(fù)雜的。與Thumbå’ŒMIPS16eä¸åŒï¼ŒCodePack系統(tÇ’ng)是真æ£å°(duì)é‹(yùn)行代碼進(jìn)行壓縮,就好åƒåœ¨PowerPC軟件ä¸é‹(yùn)行WinZip。CodePack會(huì)分æžå¹¶å£“縮整個(gè)程åºï¼Œç”Ÿæˆçš„用戶(hù)ä»£ç¢¼å¿…é ˆåœ¨é‹(yùn)行ä¸è§£å£“縮并執(zhÃ)行壓縮版本。盡管很復(fù)雜,CodePack和其它技術(shù)一樣æä¾›20%到30%的空間節(jié)çœã€‚
CodePackæ˜¯ä¸€é …(xià ng)很有å¸å¼•力的技術(shù)。在使用該技術(shù)時(shÃ),åªé ˆå’Œå¹³å¸¸ä¸€æ¨£ä½¿ç”¨æ¨™(biÄo)準(zhÇ”n)工具編è¯åµŒå…¥å¼PowerPC代碼就行,CodePack甚至å°(duì)已有的代碼也能使用(ç„¡(wú)論有沒(méi)有æºä»£ç¢¼)。在將代碼寫(xiÄ›)å…¥ROM或è£å…¥ç£ç›¤(pán)之å‰ï¼Œé‹(yùn)行CodePack壓縮工具å°(duì)代碼進(jìn)行壓縮。壓縮工具會(huì)分æžä»£ç¢¼æŒ‡ä»¤çš„分布并生æˆä¸€å°(duì)å°ˆ(zhuÄn)é–€(mén)é‡å°(duì)這個(gè)程åºä»£ç¢¼çš„éµå€¼ã€‚ç•¶(dÄng)é‹(yùn)行壓縮åŽçš„代碼時(shÃ)ï¼Œæ“æœ‰CodePack功能的處ç†å™¨ä½¿ç”¨é€™ä¸€å°(duì)éµå€¼ä¾†(lái)在é‹(yùn)行ä¸è§£é–‹(kÄi)壓縮的代碼,就好åƒç›´æŽ¥é‹(yùn)行壓縮åŽçš„代碼。解壓縮會(huì)å°(duì)處ç†å™¨çš„æµæ°´ç·šç”¢(chÇŽn)生很å°çš„å»¶é²ï¼Œä½†æ˜¯å…¶å½±éŸ¿è¢«å–指延é²ä»¥åŠå…¶å®ƒå»¶é²æ‰€æŽ©è“‹ã€‚å°(duì)于絕大多數(shù)應(yÄ«ng)用,CodePack帶來(lái)的性能影響是å¯ä»¥å¿½ç•¥çš„。
但是,CodePack還有一些其它的影響。由于æ¯ä¸€å€‹(gè)壓縮的程åºéƒ½æœ‰å…¶å–®ç¨(dú)的壓縮éµå€¼ï¼ŒCodePack本質(zhì)上既是壓縮系統(tÇ’ng)ä¹Ÿæ˜¯åŠ å¯†ç³»çµ±(tÇ’ng)。沒(méi)有éµå€¼ï¼Œç„¡(wú)è«–ä½ è‡ªå·±é‚„æ˜¯å…¶å®ƒä»»ä½•äººéƒ½ç„¡(wú)法é‹(yùn)行相應(yÄ«ng)的程åºã€‚如果丟失了或者未ç²å¾—相應(yÄ«ng)çš„éµå€¼ï¼Œå£“縮åŽçš„程åºåªæ˜¯ä¸€å †ç„¡(wú)用的亂碼,這也æ„味著壓縮åŽçš„PowerPC程åºä¸æ˜¯äºŒé€²(jìn)制代碼兼容的。除éžåŒæ™‚(shÃ)包括其解壓縮éµå€¼ï¼Œå¦å‰‡ç„¡(wú)法輕易地和其它系統(tÇ’ng)交æ›å£“縮åŽçš„程åºã€‚這會(huì)使嵌入å¼ç³»çµ±(tÇ’ng)軟件的ç¾(xià n)å ´(chÇŽng)分é…ç¨å¾®æœ‰äº›å¾©(fù)雜。
å¦å¤–,CodePack為æ¯å€‹(gè)程åºç”Ÿæˆå…©å€‹(gè)éµå€¼æ˜¯å› ?yà n)橹噶畹æ¯?6ä½å’Œä½Ž16使˜¯åˆ†åˆ¥é€²(jìn)行壓縮的。IBM的工程師發(fÄ)ç¾(xià n)æ¯ä¸€æ¢PowerPC指令的高åŠå—(æ“作碼就在其ä¸)和低åŠå—(å…¶å…§(nèi)容通常為æ“作數(shù)ã€åç§»é‡æˆ–掩碼)çš„åˆ†å¸ƒé »åº¦æ˜¯ä¸ä¸€æ¨£çš„。å°(duì)它們分別使用ä¸åŒçš„壓縮算法會(huì)使壓縮效果比僅使用任何單一算法è¦å¥½ï¼Œé€™å°±æ˜¯CodePackå°(duì)ç¨‹åºæ‰€åšçš„事。
ARCompact
ARCInternationalå…¬å¸åˆé‡‡ç”¨äº†å¦å¤–çš„ä»£ç¢¼å£“ç¸®æ–¹æ³•ã€‚å› ?yà n)锳RCtangent處ç†å™¨æœ‰ç”¨æˆ¶(hù)å¯å®šç¾©çš„æŒ‡ä»¤é›†ï¼ŒARC(åŠå…¶ç”¨æˆ¶(hù))å¯ä»¥å°(duì)指令集進(jìn)行隨心所欲的修改。作為ARCompact,ARC公叿±ºå®šåŠ å…¥ä¸€çµ„16使Œ‡ä»¤ä¾†(lái)改進(jìn)其處ç†å™¨çš„代碼密度。
而ARCompact與Thumb以åŠMIPS16eçš„å€(qÅ«)別在于å¯ä»¥å°‡16ä½ä»£ç¢¼å’Œ32ä½ä»£ç¢¼ä»»æ„混雜。由于沒(méi)有模å¼åˆ‡æ›ï¼Œä»£ç¢¼ä¸ä»»æ„分布的少許16使Œ‡ä»¤ç„¡(wú)é ˆç‚ºä¹‹ä»˜å‡ºä»€ä¹ˆé–‹(kÄi)銷(xiÄo)。在任何å¯èƒ½çš„æƒ…æ³ä¸‹ï¼ŒARC的編è¯å™¨çš„默èª(rèn)é…置會(huì)產(chÇŽn)生16使“作(為了強(qiáng)制編è¯å™¨ç”Ÿæˆ32ä½ä»£ç¢¼æˆ–與舊的處ç†å™¨ä¿æŒå…¼å®¹ï¼Œä½ å¯ä»¥é—œ(guÄn)掉這個(gè)功能)。
ARCå¯ä»¥æ··åˆä¸åŒé•·(zhÇŽng)度代碼而ä¸å¿…付出相應(yÄ«ng)的開(kÄi)銷(xiÄo)ï¼Œæ˜¯å› ?yà n)æ§ æ¸²å™¶ç½´è»œ?gòu)è¦æ¯”ARMå’ŒMIPS新。那些RISCæž¶æ§‹(gòu)的指令集(包括PowerPC)在指令å—䏿²’(méi)有指明指令長(zhÇŽng)度的ä½ã€‚諸如ARC或Tensilica的新å½RISCæž¶æ§‹(gòu),以åŠåƒx86å’Œ68k舊的架構(gòu)æ“æœ‰é€™äº›ä½ã€‚ç„¡(wú)論是出于無(wú)æ„還是é (yuÇŽn)見(jià n),變長(zhÇŽng)度指令架構(gòu)å› ?yà n)楦î‰o湊的代碼而具優(yÅu)å‹¢(shì)。
Thumb的改進(jìn)版--Thumb-2
ARMå°(duì)其代碼壓縮系統(tÇ’ng)進(jìn)è¡Œäº†æ”¹é€ å¹¶ç™¼(fÄ)布了Thumb-2。Thumb-2并䏿˜¯Thumbçš„å‡ç´š(jÃ),相å,它是å¦èµ·çˆç¶ï¼Œå¹¶ä¸”å¯ä»¥å®Œå…¨ä»£æ›¿Thumb和原先的ARM指令集。Thumb-2有些類(lèi)ä¼¼ARCompact或摩托羅拉的68k,å¯ä»¥ç„¡(wú)需模å¼åˆ‡æ›å°±é‹(yùn)行16ä½èˆ‡32使··åˆä»£ç¢¼ã€‚總的來(lái)說(shuÅ),Thumb-2æä¾›çš„代碼壓縮效率è¦ç•¥å·®ï¼Œä½†å…¶æ€§èƒ½æå¤±ä¹Ÿè¼ƒå°ã€‚
為了åšåˆ°é€™ä¸€é»ž(diÇŽn),ARM需è¦åœ¨å…¶æ“ä½œç¢¼æ˜ å°„ä¸æ‰¾åˆ°ä¸€å€‹(gè)çªç ´å£(hole),他們?cè)è´L指令(æ¢è½‰(zhuÇŽn)并連接指令,是Thumbå’ŒARM模å¼ä¹‹é–“切æ›çš„æŒ‡ä»¤)䏿‰¾åˆ°äº†éœ€è¦çš„çªç ´å£ã€‚在原有的指令集ä¸ï¼ŒBLæŒ‡ä»¤æœ‰ä¸€äº›ä½æ²’(méi)有使用,這些原先未定義的ä½çµ¦å…¨æ–°çš„æŒ‡ä»¤é›†æä¾›äº†åˆ‡æ›å…¥å£ã€‚其編碼確實(shÃ)䏿€Žä¹ˆæ¨£ï¼Œä½†ç¢ºå¯¦(shÃ)很有效。
Thumb-2最大的優(yÅu)å‹¢(shì)在于它是一套完整的指令集,程åºç„¡(wú)需切æ›å›žâ€œæ¨™(biÄo)準(zhÇ”n)â€32ä½ARM模å¼ï¼ŒåŽŸå…ˆThumb模å¼çš„é™åˆ¶å†ä¹Ÿæ²’(méi)有了。程åºç¾(xià n)在å¯ä»¥è™•ç†ä¸æ–·ã€è¨(shè)ç½®MMUã€ç®¡ç†ç·©å˜ï¼Œå’ŒçœŸæ£çš„微處ç†å™¨å¹¶æ²’(méi)什么ä¸åŒã€‚
Thumb-2é‚„æ˜¯éœ€è¦æå¤±ä¸€å®šçš„æ€§èƒ½ã€‚ç›¡ç®¡æ²’(méi)有了模å¼åˆ‡æ›é–‹(kÄi)銷(xiÄo),與標(biÄo)準(zhÇ”n)ARM代碼相比,它還是è¦èŠ±è²»(fèi)多一些的Thumb-2指令來(lái)完æˆç‰¹å®šçš„任務(wù)。å°(duì)于ARM處ç†å™¨è€Œè¨€ï¼Œé€™äº›é¡å¤–的指令(以åŠé¡å¤–的周期)會(huì)使速度é™ä½Žå¤§ç´„15%到20%。
未來(lái)çš„ARM處ç†å™¨æœ€çµ‚å°‡åªé‹(yùn)行Thumb-2代碼。由于它用一套單一的更多壓縮指令的指令集有效地å–代了ARMå’ŒThumbæŒ‡ä»¤é›†ï¼Œç‚ºä»€ä¹ˆä¸æœƒ(huì)最終徹底å–代它們呢?但å•(wèn)題是ARM的軟件兼容性怎么辦?直到ç¾(xià n)在,所有的ARM處ç†å™¨(除了Intelçš„XScale)都是二進(jìn)制兼容。盡管支æŒThumb-2的新型處ç†å™¨å°‡èƒ½é‹(yùn)行ç¾(xià n)有的ARMå’ŒThumb代碼,但å之則ä¸è¡Œã€‚ç•¶(dÄng)Thumb-2廣泛推廣åŽï¼Œå®ƒå°‡å‰µ(chuà ng)建一套單ç¨(dú)但ç‰åƒ¹(jià )的軟件庫(kù)。
è²æ˜Žï¼šæœ¬æ–‡ç‚ºè½‰(zhuÇŽn)載類(lèi)æ–‡ç« ï¼Œå¦‚æ¶‰åŠç‰ˆæ¬Š(quán)å•(wèn)題,請(qÇng)åŠæ™‚(shÃ)è¯(lián)系我們刪除(QQ: 2737591964),ä¸ä¾¿ä¹‹è™•,敬請(qÇng)è«’è§£ï¼
標(biÄo)簽:
上一篇:英å¨é¨°DA300直線型驅(qÅ«)å‹•(dòng)在固晶...
ä¸‹ä¸€ç¯‡ï¼šææ´²ç³»ä¼ºæœç”¢(chÇŽn)å“的異åŒåˆ†æž
ä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)版權(quán)與å…責(zé)è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來(lái)æºï¼šä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)(www.hysjfh.com)ç¨(dú)家所有。如需轉(zhuÇŽn)載請(qÇng)與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個(gè)人轉(zhuÇŽn)載使用時(shÃ)é ˆæ³¨æ˜Žä¾†(lái)æºâ€œä¸åœ‹(guó)傳動(dòng)ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責(zé)任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來(lái)æºçš„稿件,å‡ä¾†(lái)自互è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請(qÇng)ä¿ç•™ç¨¿ä»¶ä¾†(lái)æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² (fù)版權(quán)法律責(zé)任。
相關(guÄn)資訊