Red Hat இல் புதிய இலகுரக JIT கம்பைலர் , இது முன்னர் ஒரு இடைநிலை பிரதிநிதித்துவமாக மாற்றப்பட்ட குறியீட்டை செயல்படுத்துவதை உறுதி செய்கிறது (நடுத்தர உள் பிரதிநிதித்துவம், மற்றொரு இடைநிலை பிரதிநிதித்துவத்துடன் குழப்பமடையக்கூடாது (மிட்-லெவல் ஐஆர்), ரஸ்ட் கம்பைலரில் பயன்படுத்தப்படுகிறது). வேகமான மற்றும் கச்சிதமான மொழிபெயர்ப்பாளர்கள் மற்றும் JIT ஐ செயல்படுத்துவதற்கான கட்டமைப்பை வழங்குவதை இந்த திட்டம் நோக்கமாகக் கொண்டுள்ளது. திட்டக் குறியீடு C இல் எழுதப்பட்டுள்ளது மற்றும் MIT உரிமத்தின் கீழ்.
வளர்ச்சியின் தற்போதைய கட்டத்தில், MIR இன் இடைநிலை பிரதிநிதித்துவத்திற்கான மொழிபெயர்ப்பாளர்கள் தயாராக உள்ளனர் மற்றும் பிட்கோட் (Bitcode), ஆனால் எதிர்காலத்தில் WebAssembly, Java bytecode ஆகியவற்றிற்கான MIR ஐ உருவாக்கும் திறனை செயல்படுத்த திட்டமிடப்பட்டுள்ளது. (பொது இடைநிலை மொழி), ரஸ்ட் மற்றும் சி++. JIT இன்ஜின் டெவலப்பர்களில் ஒருவரால் இந்த திட்டம் உருவாக்கப்படுகிறது , ரூபியில் பயன்படுத்தப்படுகிறது. முதலில், MIR அடிப்படையிலான JIT செயல்படுத்த திட்டமிடப்பட்டுள்ளது и . எதிர்காலத்தில், MIR ஐப் பயன்படுத்த GCC யை போர்ட் செய்வதும் சாத்தியமாகும்.
இடைநிலை MIR குறியீடு பைனரி மற்றும் உரை (படிக்கக்கூடிய) வடிவத்தில் வழங்கப்படலாம். இந்தக் குறியீட்டை மொழிபெயர்ப்பாளரில் செயல்படுத்தலாம் மற்றும் அதன் அடிப்படையில் இயந்திரக் குறியீட்டை உருவாக்கலாம் (x86_64, ARM64, PPC64 மற்றும் MIPS64 திட்டங்களில்). MIR இலிருந்து CIL, Java bytecode, WebAssembly மற்றும் C குறியீட்டிற்கு - தலைகீழ் மாற்றத்தையும் செய்ய முடியும்.
MIR இன் அம்சங்களில், கண்டிப்பான தட்டச்சு, தொகுதிகள் மற்றும் செயல்பாடுகளுக்கான ஆதரவு, வகை மாற்றத்திற்கான வழிமுறைகளின் தொகுப்பை வழங்குதல், ஒப்பீடு, எண்கணிதம் மற்றும் தருக்க செயல்பாடுகள், கிளையிடுதல் போன்றவை தனித்து நிற்கின்றன. MIR வடிவத்திற்கு மாற்றப்பட்ட செயல்பாடுகளின் தொகுப்பை உள்ளடக்கிய தொகுதிகள், நூலகங்களின் வடிவத்தில் ஏற்றப்படலாம், மேலும் வெளிப்புற C குறியீட்டையும் ஏற்றலாம்.
நேட்டிவ் எக்ஸிகியூட்டபிள் கோப்புகளில் தொகுப்பதற்குப் பதிலாக இடைநிலைக் குறியீட்டை JITயில் செயல்படுத்துவதன் முக்கிய நன்மை, வெவ்வேறு வன்பொருள் கட்டமைப்புகளில் (x86, ARM, PPC, MIPS) மறுகட்டமைக்காமல் செயல்படுத்தக்கூடிய சிறிய கோப்புகளை உருவாக்கும் திறன் ஆகும். ஆதரிக்கப்படாத கட்டமைப்புகளுக்கு, ஒரு விளக்கம் பயன்முறை உள்ளது, இது MIR விஷயத்தில் JIT ஐ விட 6-10 மடங்கு மெதுவாக இருக்கும்.
தற்போதுள்ள JIT கம்பைலர்களின் தீமைகள்
ஜி.சி.சி மற்றும் எல்.எல்.வி.எம் ஆகியவை அதிகமாக வீங்கியிருப்பதாகவும், தொகுத்தல் வேகம் குறைவாக இருப்பதாகவும், வெவ்வேறு நிரலாக்க மொழிகளுக்கான ஒருங்கிணைந்த மேம்படுத்தல்களைச் செயல்படுத்துவது கடினமாக இருப்பதாகவும் கூறப்படுகிறது. MIR டெவலப்பர்கள் இவற்றைத் தீர்க்க முயன்றனர்
சிக்கல்கள் மற்றும் இலக்குகளை அமைத்தல்:
- MIR இல் தொகுத்தல் GCC ஐ விட குறைந்தது 100 மடங்கு வேகமாக இருக்க வேண்டும்;
- MIR செயல்பாட்டிற்கான JIT மிகவும் கச்சிதமாக இருக்க வேண்டும் மற்றும் தோராயமாக 15 ஆயிரம் வரிகளை உள்ளடக்கியதாக இருக்க வேண்டும்;
- JIT ஐப் பயன்படுத்தி MIR ஐ செயல்படுத்துவது GCC இல் அதே C குறியீட்டிலிருந்து தொகுக்கப்பட்ட ஒரு இயங்கக்கூடிய செயல்திறனை விட 30% குறைவாக இருக்க வேண்டும் ("-O2" மேம்படுத்தல்களுடன்);
- உண்மையான செயல்படுத்தல் தொடங்கும் முன் துவக்க நிலைகள் 100 மடங்கு குறைவான நேரத்தை எடுக்க வேண்டும்;
- JITக்கான MIR பிரதிநிதித்துவமானது, GCC இல் தொகுக்கப்பட்ட இயங்கக்கூடியதை விட 100 மடங்கு சிறியதாக இருக்க வேண்டும்.
அதன் தற்போதைய வடிவத்தில், MIR செயல்படுத்தல் ஆரம்பத்தில் நிர்ணயிக்கப்பட்ட இலக்குகளை விட பல வழிகளில் முன்னோக்கி உள்ளது: MIR இல் தொகுத்தல் செயல்திறன் "GCC -O2" ஐ விட 178 மடங்கு வேகமாக இருப்பதாக சோதனைகள் காட்டுகின்றன, செயல்படுத்தல் செயல்திறன் நேட்டிவ் குறியீட்டின் அளவு 6% பின்தங்கியிருக்கிறது. 144 மடங்கு சிறியது, MIR செயல்படுத்தல் JIT என்பது 16 ஆயிரம் கோடுகள் குறியீடு.
ஆதாரம்: opennet.ru
