2016-11-26 7 views
6

आरआईएससी एमआईपीएस निर्देश सेट में, हमारे पास भार बाइट (lbu) है, आधा शब्द लोड करें (lhu) और लोड शब्द (lw) निर्देश। मुझे लगता है कि lbu और lhu सब कुछ lw के साथ प्राप्त किया जा सकता है।एमआईपीएस: जब हमारे पास पहले से लोड शब्द है तो हमें लोड बाइट की आवश्यकता क्यों है?

तो एमआईपीएस डिजाइनर ने lbu और lhu क्यों पेश किया? किस परिस्थिति में (अधिमानतः गैर अस्पष्ट) वे उपयोगी हो सकते हैं? शायद lw निष्पादित करने के लिए lbu से अधिक समय लेता है, भले ही दोनों एक ही निर्देश हैं?

+1

मूल अल्फा में उप शब्द लोड/स्टोर निर्देश नहीं थे। आप उनके बिना बहुत दूर हो सकते हैं, लेकिन अल्फा को अंततः मल्टीप्रोसेसर सिस्टम के लिए इन निर्देशों के साथ निर्देश सेट का विस्तार करना पड़ा। – EOF

उत्तर

6

lw उस पते की आवश्यकता है जिसे आप शब्द-संरेखित होने के लिए लोड करते हैं (यानी पता 4 का एक होना चाहिए)।

तो मान लीजिए कि आप इस पते 0x1000 पर स्थित सरणी है कि आपके पास करते हैं:

array: .byte 0,1,2,3 

और तुम दूसरे बाइट (1) है, जो पता 0x1001 पर स्थित है, जो शब्द नहीं है लोड करना चाहते हैं -aligned। यह स्पष्ट रूप से काम नहीं करेगा, जब तक आप 0xपते 0x1000 से नहीं करते हैं और फिर बाइट प्राप्त करने के लिए कुछ स्थानांतरण और एंडिंग करते हैं, जो प्रोग्रामर के रूप में वास्तविक परेशानी होगी।

या मान लें कि आप 0 लोड करना चाहते हैं, जो शब्द-संरेखित पते पर स्थित है, और कुछ मूल्य के विरुद्ध इसकी तुलना करें। तो आप 0xपते 0x1000 से करते हैं, लेकिन अब आपके लक्षित रजिस्टर में 0 की बजाय 0x00010203 या 0x03020100 (एंडियननेस के आधार पर) होगा। तो तुलना करने से पहले आपको थोड़ा सा करना होगा और बाइट निकालना होगा जिसे आप चाहते थे।

जैसा कि मुझे यकीन है कि आप देख सकते हैं कि जब भी आप डेटा के व्यक्तिगत बाइट्स को संसाधित करना चाहते हैं तो इन अतिरिक्त चरणों को करना बहुत असुविधाजनक होगा - जो कि अधिकांश कार्यक्रमों में एक बहुत ही आम ऑपरेशन है।

+0

माइकल - धन्यवाद। संदेह के संबंध में मेरे पास निष्पादन समय था, मुझे लगता है कि 'lw' और 'lbu' एक ही राशि का समय लेगा, है ना? यही है, अगर हमें स्मृति की प्रतीक्षा करने की ज़रूरत है, तो आवश्यक प्रतीक्षा समय दोनों के बीच अलग नहीं होगा, सही? – flow2k

+1

@ flow2k: 32-बिट रजिस्टर में बाइट को विस्तारित करना हार्डवेयर में अनिवार्य रूप से मुफ़्त है, और उम्मीद है कि एक अच्छा कार्यान्वयन कुशलता से कैश से लाने के लिए सही शब्द चुन सकता है। मैं एलडब्लू और एलबीयू को ऐसा करने की उम्मीद करता हूं, लेकिन यह संभव है कि कुछ कार्यान्वयन पर एलबीयू की थोड़ी अधिक विलंबता हो। यदि एलएचयू असाइन किए गए आधे शब्दों पर काम करता है, तो उसे दो पड़ोसी कैश लाइनों में से प्रत्येक से एक बाइट लोड करने की आवश्यकता हो सकती है। यह हर समय धीमा हो सकता है, या केवल कैश-लाइन विभाजन पर धीमा हो सकता है। (पूरी तरह से x86 और CPU आर्किटेक्चर के मेरे ज्ञान के आधार पर सामान बना रहा है; आईडीके क्या एमआईपीएस एचडब्ल्यू है)। –

संबंधित मुद्दे

 संबंधित मुद्दे