تخصيص السجل
في تحسين المترجم ، يعد تخصيص السجلات عملية تعيين المتغيرات التلقائية المحلية ونتائج التعبيرات إلى عدد محدود من سجلات المعالج .
يمكن تخصيص السجلات على مستوى كتلة أساسية ( تخصيص السجلات المحلي )، أو على مستوى دالة/ إجراء كامل ( تخصيص السجلات العام )، أو عبر حدود الدوال التي يتم اجتيازها من خلال مخطط الاستدعاء ( تخصيص السجلات بين الإجراءات ). عند تخصيص السجلات لكل دالة/إجراء، قد تتطلب اتفاقية الاستدعاء إدراج أوامر الحفظ/الاستعادة حول كل موقع استدعاء .
سياق
مبدأ
| بنيان | 32 بت | 64 بت |
|---|---|---|
| ذراع | 15 | 31 |
| معالجات Intel x86 | 8 | 16 |
| نظام MIPS | 32 | 32 |
| باور/باور بي سي | 32 | 32 |
| RISC-V | 15/31 | 15/31 |
| سبارك | 31 | 31 |
في العديد من لغات البرمجة ، يمكن للمبرمج استخدام أي عدد من المتغيرات . يستطيع الحاسوب قراءة وكتابة سجلات وحدة المعالجة المركزية (CPU) بسرعة ، لذا يعمل البرنامج بشكل أسرع كلما زاد عدد المتغيرات المتاحة في سجلات وحدة المعالجة المركزية. [ 1 ] كذلك، يكون الوصول إلى السجلات أحيانًا أكثر اختصارًا، مما يجعل الكود أصغر حجمًا وأسرع استجابةً عند استخدام السجلات بدلًا من الذاكرة. مع ذلك، فإن عدد السجلات محدود. لذلك، عندما يقوم المترجم بترجمة الكود إلى لغة الآلة، عليه تحديد كيفية تخصيص المتغيرات للعدد المحدود من السجلات في وحدة المعالجة المركزية. [ 2 ] [ 3 ]
لا تُستخدم جميع المتغيرات (أو "تُفعّل") في الوقت نفسه، لذا، خلال دورة حياة البرنامج، قد يُستخدم سجلٌّ مُعيَّن لتخزين متغيرات مختلفة. مع ذلك، لا يُمكن إسناد متغيرين قيد الاستخدام في الوقت نفسه إلى السجل نفسه دون إتلاف أحدهما. إذا لم تكن هناك سجلات كافية لتخزين جميع المتغيرات، فقد يتم نقل بعضها من وإلى ذاكرة الوصول العشوائي (RAM) . تُسمى هذه العملية "تفريغ" السجلات. [ 4 ] خلال دورة حياة البرنامج، يُمكن تفريغ متغير وتخزينه في السجلات في آنٍ واحد: يُعتبر هذا المتغير حينها "مُجزَّأً". [ 5 ] يُعد الوصول إلى ذاكرة الوصول العشوائي أبطأ بكثير من الوصول إلى السجلات [ 6 ] ، وبالتالي يعمل البرنامج المُترجم بشكل أبطأ. لذلك، يهدف المُترجم المُحسِّن إلى إسناد أكبر عدد ممكن من المتغيرات إلى السجلات. يُعد " ضغط السجلات " العالي مصطلحًا تقنيًا يعني الحاجة إلى المزيد من عمليات التفريغ وإعادة التحميل؛ وقد عرّفه براون وآخرون بأنه "عدد المتغيرات المُفعَّلة في الوقت نفسه عند تنفيذ تعليمة واحدة". [ 7 ]
بالإضافة إلى ذلك، تقوم بعض تصميمات الحواسيب بتخزين السجلات التي يتم الوصول إليها بشكل متكرر مؤقتًا. لذا، يمكن تحسين البرامج بشكل أكبر عن طريق تخصيص نفس السجل لمصدر ووجهة التعليمات moveكلما أمكن ذلك. وهذا مهم بشكل خاص إذا كان المترجم يستخدم تمثيلًا وسيطًا مثل نموذج التخصيص الأحادي الثابت (SSA). على وجه الخصوص، عندما لا يكون نموذج SSA مُحسَّنًا بالكامل، فإنه قد يُولِّد moveتعليمات إضافية بشكل مصطنع.
مكونات تخصيص السجلات
لذا، تتضمن عملية تخصيص الذاكرة في المسجلات اختيار مكان تخزين المتغيرات أثناء التشغيل، أي داخل المسجلات أو خارجها. إذا كان سيتم تخزين المتغير في المسجلات، فيجب على مُخصِّص الذاكرة تحديد المسجل (أو المسجلات) الذي سيتم تخزين هذا المتغير فيه. ومن التحديات الأخرى تحديد المدة التي يجب أن يبقى فيها المتغير في نفس الموقع.
يمكن لمُخصِّص السجلات، بغض النظر عن استراتيجية التخصيص المختارة، الاعتماد على مجموعة من الإجراءات الأساسية لمواجهة هذه التحديات. ويمكن تجميع هذه الإجراءات في عدة فئات مختلفة: [ 8 ]
- نقل الإدخال
- تتضمن هذه العملية زيادة عدد تعليمات النقل بين السجلات، أي جعل المتغير موجودًا في سجلات مختلفة خلال فترة حياته، بدلًا من سجل واحد. ويحدث هذا في أسلوب نطاق الحياة المنفصل.
- سفك
- يتضمن هذا الإجراء تخزين متغير في الذاكرة ( وحدة التخزين الأساسية مثل ذاكرة الوصول العشوائي ) بدلاً من السجلات. [ 9 ]
- تكليف
- يتضمن هذا الإجراء تعيين سجل لمتغير. [ 10 ]
- الاندماج
- يتضمن هذا الإجراء الحد من عدد عمليات النقل بين السجلات، وبالتالي الحد من إجمالي عدد التعليمات. على سبيل المثال، من خلال تحديد متغير موجود في طرق مختلفة، وتخزينه في سجل واحد طوال فترة وجوده. [ 9 ]
تُحسّن العديد من أساليب تخصيص السجلات أداء فئة واحدة أو أكثر من فئات الإجراءات المحددة.

المشاكل الشائعة التي تظهر في تخصيص السجلات
تُثير عملية تخصيص السجلات عدة مشاكل يمكن معالجتها (أو تجنبها) من خلال أساليب مختلفة لتخصيص السجلات. وفيما يلي ثلاثة من أكثر المشاكل شيوعًا:
- التداخل
- في بعض البنى، قد يؤثر تعيين قيمة لأحد السجلات على قيمة سجل آخر، ويُعرف هذا بالتداخل. على سبيل المثال، تحتوي بنية x86 على أربعة سجلات عامة للأغراض العامة ذات 32 بت، والتي يمكن استخدامها أيضًا كسجلات ذات 16 بت أو 8 بت. [ 11 ] في هذه الحالة، سيؤثر تعيين قيمة 32 بت للسجل eax على قيمة السجل al.
- التلوين المسبق
- تتمثل هذه المشكلة في فرض تعيين بعض المتغيرات إلى سجلات معينة. على سبيل المثال، في اصطلاحات استدعاء PowerPC ، يتم تمرير المعاملات عادةً في السجلات من R3 إلى R10، ويتم تمرير القيمة المرجعة في السجل R3. [ 12 ]
- مشكلة NP
- أظهر تشايتين وآخرون أن تخصيص السجلات الأمثل هو مسألة NP-كاملة . وتعتمد هذه الاكتمالية NP كليًا على كيفية هيكلة المسألة. وقد ثبت أنه بالنسبة للبرامج ذات صيغة SSA، يمكن حل جزء تلوين الرسم البياني من مسألة تخصيص السجلات في وقت خطي. إن ما يجعل مسألة تلوين الرسم البياني العامة مسألة NP-كاملة يختلف عن ما يجعل بعض صيغ مسألة تخصيص السجلات مسألة NP-كاملة. [ 13 ]
تقنيات تخصيص السجلات
يمكن تخصيص السجلات على مستوى كتلة أساسية من التعليمات البرمجية، ويُطلق على هذه العملية اسم "تخصيص السجلات المحلي"، وقد ذُكرت لأول مرة من قِبل هورويتز وآخرون [ 14 ] . ولأن الكتل الأساسية لا تحتوي على تفرعات، يُعتقد أن عملية التخصيص سريعة، لأن إدارة نقاط دمج مخطط تدفق التحكم في تخصيص السجلات تُعد عملية تستغرق وقتًا طويلاً [ 15 ] . ومع ذلك، يُعتقد أن هذا النهج لا يُنتج تعليمات برمجية مُحسَّنة مثل النهج "العالمي"، الذي يعمل على مستوى وحدة الترجمة بأكملها (طريقة أو إجراء، على سبيل المثال) [ 16 ] .
تخصيص تلوين الرسم البياني
يُعدّ تخصيص الذاكرة باستخدام تلوين الرسم البياني النهج السائد لحلّ مشكلة تخصيص السجلات. [ 17 ] [ 18 ] وقد اقترحه تشايتين وآخرون لأول مرة. [ 4 ] في هذا النهج، تُمثّل العُقد في الرسم البياني نطاقات نشطة ( متغيرات ، وقيم مؤقتة ، وسجلات افتراضية/رمزية) مُرشّحة لتخصيص السجلات. تربط الحواف النطاقات النشطة المتداخلة، أي النطاقات النشطة التي تكون نشطة في الوقت نفسه عند نقطة واحدة على الأقل في البرنامج. وبذلك، يُختزل تخصيص السجلات إلى مشكلة تلوين الرسم البياني ، حيث تُخصّص ألوان (سجلات) للعُقد بحيث لا تحصل عُقدتان متصلتان بحافة على اللون نفسه. [ 19 ]
باستخدام تحليل الحيوية ، يمكن إنشاء مخطط التداخل. يُستخدم مخطط التداخل، وهو مخطط فترات حيث تمثل العقد متغيرات البرنامج، لنمذجة المتغيرات التي لا يمكن تخصيصها لنفس السجل. [ 20 ]
مبدأ
المراحل الرئيسية في مُخصِّص سجلات تلوين الرسم البياني على نمط تشايتين هي: [ 18 ]

- إعادة الترقيم : اكتشف معلومات النطاق المباشر في البرنامج المصدر.
- بناء : بناء مخطط التداخل.
- الاندماج : دمج النطاقات الحية للمتغيرات غير المتداخلة المرتبطة بتعليمات النسخ.
- تكلفة التجاوز : احسب تكلفة تجاوز كل متغير. يقيّم هذا تأثير ربط متغير بالذاكرة على سرعة البرنامج النهائي.
- التبسيط : قم بإنشاء ترتيب للعقد في الرسم البياني للاستدلالات
- كود التفريغ : أدخل تعليمات التفريغ، أي عمليات التحميل والتخزين لتبديل القيم بين السجلات والذاكرة.
- حدد : قم بتعيين سجل لكل متغير.
العيوب والتحسينات الإضافية
يُعاني تخصيص تلوين الرسوم البيانية من ثلاثة عيوب رئيسية. أولًا، يعتمد على تلوين الرسوم البيانية، وهي مسألة NP-كاملة ، لتحديد المتغيرات التي سيتم تخزينها مؤقتًا. على الرغم من أن إيجاد تلوين أدنى للرسوم البيانية العامة يُعدّ بالفعل مسألة NP-كاملة، [ 21 ] إلا أنه يُمكن إجراء التلوين الأدنى للرسوم البيانية الفاصلية (بما في ذلك الرسوم البيانية التداخلية) في وقت خطي (انظر المسح الخطي أدناه)؛ [ 22 ] [ 23 ] لذلك، لا تستغل هذه التقنية افتراضات المسألة استغلالًا كاملًا. ثانيًا، ما لم يتم استخدام تقسيم النطاق الحي، يتم تخزين المتغيرات المُخرَجة مؤقتًا في كل مكان: تُدرج تعليمات التخزين في أقرب وقت ممكن، أي مباشرة بعد تعريف المتغيرات؛ بينما تُدرج تعليمات التحميل في وقت متأخر، قبل استخدام المتغيرات مباشرة. ثالثًا، يبقى المتغير الذي لم يتم تخزينه مؤقتًا في نفس السجل طوال فترة وجوده. [ 24 ]
من جهة أخرى، قد يظهر اسم سجل واحد في فئات سجلات متعددة، حيث تمثل الفئة مجموعة من أسماء السجلات القابلة للتبديل في دور محدد. وبالتالي، قد تكون أسماء السجلات المتعددة أسماءً بديلة لسجل واحد في الجهاز. [ 25 ] وأخيرًا، يُعد تلوين الرسم البياني تقنية فعالة لتخصيص السجلات، ولكنه مكلف حسابيًا نظرًا لاستخدامه رسمًا بيانيًا للتداخل، والذي قد يصل حجمه في أسوأ الحالات إلى تربيع عدد النطاقات النشطة. [ 26 ] يفترض الشكل التقليدي لتخصيص السجلات باستخدام تلوين الرسم البياني ضمنيًا وجود بنك واحد من السجلات العامة غير المتداخلة، ولا يتعامل مع السمات المعمارية غير المنتظمة مثل أزواج السجلات المتداخلة، والسجلات ذات الأغراض الخاصة، وبنوك السجلات المتعددة. [ 27 ]
توصل بريغز وزملاؤه إلى تحسين لاحق لأسلوب تلوين الرسوم البيانية الخاص بتشايتين، وهو ما يُعرف بالدمج المحافظ. يُضيف هذا التحسين معيارًا لتحديد متى يُمكن دمج نطاقين نشطين. فبالإضافة إلى شرط عدم التداخل، لا يُمكن دمج متغيرين إلا إذا كان دمجهما لن يُسبب أي تداخل إضافي. كما يُقدم بريغز وزملاؤه تحسينًا ثانيًا لأعمال تشايتين، وهو التلوين المُتحيز. يُحاول التلوين المُتحيز تخصيص اللون نفسه في الرسم البياني للنطاقات النشطة المرتبطة بالنسخ. [ 18 ]
المسح الخطي
يُعدّ المسح الخطي أسلوبًا آخر لتخصيص السجلات على مستوى النظام. وقد اقترحه بوليتو وآخرون لأول مرة عام ١٩٩٩. [ ٢٨ ] في هذا الأسلوب، لا يُحوّل الكود إلى رسم بياني، بل تُمسح جميع المتغيرات خطيًا لتحديد نطاق صلاحيتها، المُمثّل بفترة زمنية. وبمجرد تحديد نطاقات صلاحية جميع المتغيرات، تُجتاز هذه الفترات بترتيب زمني. ورغم أن هذا الاجتياز قد يُساعد في تحديد المتغيرات التي تتداخل نطاقات صلاحيتها، إلا أنه لا يتم إنشاء رسم بياني للتداخل، ويتم تخصيص المتغيرات بطريقة جشعة. [ ٢٦ ]
الدافع وراء هذا النهج هو السرعة؛ ليس من حيث وقت تنفيذ الكود المُولّد، بل من حيث الوقت المُستغرق في توليد الكود. عادةً، تُنتج أساليب تلوين الرسوم البيانية القياسية كودًا عالي الجودة، ولكنها تُسبب عبئًا كبيرًا ، [ 29 ] [ 30 ] حيث أن خوارزمية تلوين الرسوم البيانية المُستخدمة لها تكلفة تربيعية. [ 31 ] وبسبب هذه الخاصية، يُعد المسح الخطي هو الأسلوب المُستخدم حاليًا في العديد من مُجمّعات JIT، مثل مُجمّع عميل Hotspot ، وV8 ، و Jikes RVM ، [ 5 ] وبيئة تشغيل Android (ART). [ 32 ] يستخدم مُجمّع خادم Hotspot تلوين الرسوم البيانية للحصول على كود فائق الجودة. [ 33 ]
الشفرة الزائفة
يصف هذا الخوارزمية كما اقترحها بوليتو وآخرون لأول مرة، [ 34 ] حيث:
- R هو عدد السجلات المتاحة.
- Active هي قائمة، مرتبة حسب ترتيب نقطة النهاية المتزايدة، للفترات الحية المتداخلة مع النقطة الحالية والموضوعة في سجلات.
تخصيص سجل المسح الخطي نشط ← {} لكل فاصل زمني مباشر i ، بترتيب تصاعدي لنقطة البداية ، نفّذ ExpireOldIntervals(i) إذا كان طول (النشط) يساوي R ، SpillAtInterval(i) آخر register[i] ← سجل تمت إزالته من مجموعة السجلات الحرة أضف i إلى active، مرتبة حسب نقطة النهاية التصاعدية ExpireOldIntervals(i) لكل فترة j في active، بترتيب تصاعدي لنقطة النهاية ، إذا كانت endpoint[j] ≥ startpoint[i] ، فقم بإزالة j من active أضف السجل[j] إلى مجموعة السجلات الحرة SpillAtInterval(i) انسكاب ← آخر فاصل زمني في النشاط إذا كانت قيمة endpoint[spill] أكبر من قيمة endpoint[i] ، register[i] ← register[spill] الموقع[الانسكاب] ← موقع المكدس الجديد أزل السائل المنسكب من المنطقة النشطة أضف i إلى العنصر النشط، مرتبةً حسب تزايد نقطة النهاية، وإلا فإن location[i] ← موقع المكدس الجديدالعيوب والتحسينات الإضافية
مع ذلك، يُعاني المسح الخطي من عيبين رئيسيين. أولًا، نظرًا لطبيعته الجشعة، فإنه لا يأخذ في الحسبان فترات انقطاع البيانات، أي "النطاقات التي لا تكون فيها قيمة المتغير مطلوبة". [ 35 ] [ 36 ] إضافةً إلى ذلك، سيبقى المتغير المُخزَّن مُخزَّنًا طوال فترة وجوده.

استندت العديد من الدراسات البحثية الأخرى إلى خوارزمية المسح الخطي لبوليتو. فعلى سبيل المثال، اقترح تراوب وآخرون خوارزمية تُسمى "تعبئة الحاويات ذات الفرصة الثانية" بهدف توليد شفرة ذات جودة أفضل. [ 37 ] [ 38 ] في هذا النهج، تُتاح للمتغيرات المُخزّنة مؤقتًا فرصة التخزين لاحقًا في سجل باستخدام طريقة استدلالية مختلفة عن تلك المستخدمة في خوارزمية المسح الخطي القياسية. فبدلًا من استخدام فترات زمنية حية، تعتمد الخوارزمية على نطاقات حية، ما يعني أنه إذا لزم تخزين نطاق معين مؤقتًا، فليس من الضروري تخزين جميع النطاقات الأخرى المقابلة لهذا المتغير مؤقتًا.
تم تكييف تخصيص المسح الخطي للاستفادة من شكل SSA : إذ تُبسط خصائص هذا التمثيل الوسيط خوارزمية التخصيص وتسمح بحساب فجوات العمر مباشرةً. [ 39 ] أولًا، يتم تقليل الوقت المُستغرق في تحليل مخطط تدفق البيانات، الذي يهدف إلى بناء فترات العمر، وذلك لأن المتغيرات فريدة. [ 40 ] وبالتالي، ينتج عنه فترات عمر أقصر، لأن كل تعيين جديد يُقابل فترة عمر جديدة. [ 41 ] [ 42 ] ولتجنب نمذجة الفترات وفجوات العمر، قدم روجرز تبسيطًا يُسمى مجموعات المستقبل النشطة، والذي نجح في إزالة الفترات لـ 80% من التعليمات. [ 43 ]
إعادة التجسيد
الاندماج
في سياق تخصيص السجلات، يُقصد بالدمج عملية دمج عمليات نقل المتغيرات عن طريق تخصيص هذين المتغيرين لنفس الموقع. تتم عملية الدمج بعد إنشاء مخطط التداخل. بمجرد دمج عقدتين، يجب أن تحصلا على نفس اللون وأن تُخصص لهما نفس السجل، وذلك عندما تصبح عملية النسخ غير ضرورية. [ 44 ]
قد يكون لعملية الدمج تأثيرات إيجابية وسلبية على قابلية تلوين الرسم البياني للتداخل. [ 9 ] على سبيل المثال، من التأثيرات السلبية للدمج على قابلية تلوين الرسم البياني للاستدلال هو دمج عقدتين، حيث ستكون العقدة الناتجة عبارة عن اتحاد لحواف العقدتين المدمجتين. [ 9 ] أما من التأثيرات الإيجابية للدمج على قابلية تلوين الرسم البياني للاستدلال، فهو أنه عندما تتداخل عقدة مع كلتا العقدتين المدمجتين، تنخفض درجة تلك العقدة بمقدار واحد، مما يؤدي إلى تحسين قابلية تلوين الرسم البياني للتداخل بشكل عام. [ 45 ]
هناك العديد من الطرق الاستدلالية للدمج المتاحة: [ 46 ]
- اندماج عدواني
- طُبِّقَت هذه الطريقة لأول مرة في مُخصِّص السجلات الأصلي لشايتين. تهدف هذه الطريقة الاستدلالية إلى دمج أي عُقد غير متداخلة ذات صلة بالنسخ. [ 47 ] من منظور إزالة النسخ، تُحقق هذه الطريقة الاستدلالية أفضل النتائج. [ 48 ] من ناحية أخرى، قد يؤثر الدمج المُفرط على إمكانية تلوين الرسم البياني للاستدلال. [ 45 ]
- اندماج المحافظين
- تستخدم هذه الطريقة بشكل أساسي نفس الأسلوب الاستدلالي المستخدم في عملية الدمج العدواني، ولكنها تدمج الحركات إذا، وفقط إذا، لم تؤثر على إمكانية تلوين الرسم البياني للتداخل. [ 49 ]
- الاندماج المتكرر
- يزيل هذا الأسلوب حركة واحدة محددة في كل مرة، مع الحفاظ على إمكانية تلوين الرسم البياني. [ 50 ]
- اندماج متفائل
- تعتمد هذه الطريقة على التجميع العدواني، ولكن إذا تضررت إمكانية تلوين الرسم البياني للاستدلال، فإنها تتخلى عن أقل عدد ممكن من الحركات. [ 51 ]
الأساليب المختلطة
التخصيص الهجين
لا تقتصر بعض أساليب تخصيص السجلات الأخرى على تقنية واحدة لتحسين استخدامها. فعلى سبيل المثال، اقترح كافازوس وآخرون حلاً يسمح باستخدام كلٍ من خوارزمية المسح الخطي وخوارزمية تلوين الرسم البياني. [ 52 ] في هذا الأسلوب، يُحدد الاختيار بين الحلين ديناميكيًا: أولًا، تُستخدم خوارزمية تعلم آلي "خارج وقت التشغيل"، أي ليس أثناء التشغيل، لبناء دالة استدلالية تُحدد خوارزمية التخصيص المناسبة. ثم تُستخدم هذه الدالة الاستدلالية أثناء التشغيل؛ وبناءً على سلوك البرنامج، يُمكن للمُخصِّص الاختيار بين إحدى الخوارزميتين المتاحتين. [ 53 ]
يُعدّ تخصيص سجلات التتبع أسلوبًا حديثًا طوّره إيسل وآخرون [ 3 ] [ 5 ] . تُعالج هذه التقنية التخصيص محليًا، إذ تعتمد على بيانات التنميط الديناميكي لتحديد الفروع الأكثر استخدامًا في مخطط تدفق التحكم. ثم تستنتج مجموعة من "التتبعات" (أي مقاطع التعليمات البرمجية) حيث يتم تجاهل نقطة الدمج لصالح الفرع الأكثر استخدامًا. بعد ذلك، تتم معالجة كل تتبع بشكل مستقل بواسطة المُخصِّص. يُمكن اعتبار هذا الأسلوب هجينًا لأنه يسمح باستخدام خوارزميات تخصيص سجلات مختلفة بين التتبعات المختلفة. [ 54 ]
تقسيم التخصيص
يُعدّ التخصيص المُجزّأ تقنية أخرى لتخصيص السجلات تجمع بين أساليب مختلفة، تُعتبر عادةً متناقضة. فعلى سبيل المثال، يمكن اعتبار تقنية التخصيص الهجينة مُجزّأة لأن مرحلة بناء الاستدلال الأولى تُنفّذ خارج النظام، بينما يُنفّذ استخدام الاستدلال عبر النظام. [ 26 ] وبالمثل، اقترح ب. ديوف وآخرون تقنية تخصيص تعتمد على كلٍّ من السلوكيات خارج النظام وعبر النظام، وهما التجميع الثابت والتجميع الديناميكي. [ 55 ] [ 56 ] خلال المرحلة خارج النظام، تُجمع أولًا مجموعة التخزين المؤقت الأمثل باستخدام البرمجة الخطية الصحيحة . ثم تُحدّد نطاقات التشغيل باستخدام compressAnnotationالخوارزمية التي تعتمد على مجموعة التخزين المؤقت الأمثل المُحدّدة مسبقًا. ويُجرى تخصيص السجلات لاحقًا خلال المرحلة عبر النظام، بناءً على البيانات التي جُمعت في المرحلة خارج النظام. [ 57 ]
في عام 2007، اقترح بوشيز وآخرون أيضًا تقسيم تخصيص السجل إلى مراحل مختلفة، بحيث تُخصص مرحلة واحدة للتسرب، وأخرى للتلوين والدمج. [ 58 ]
مقارنة بين التقنيات المختلفة
استُخدمت عدة مقاييس لتقييم أداء تقنيات تخصيص السجلات المختلفة. عادةً ما ينطوي تخصيص السجلات على مفاضلة بين جودة الكود، أي الكود سريع التنفيذ، وعبء التحليل، أي الوقت المُستغرق في تحليل الكود المصدري لتوليد كود بتخصيص سجلات مُحسَّن. من هذا المنطلق، يُعد وقت تنفيذ الكود المُولَّد والوقت المُستغرق في تحليل جاهزية النظام مقياسين مهمين لمقارنة التقنيات المختلفة. [ 59 ]
بعد اختيار المقاييس المناسبة، يجب أن يكون الكود الذي ستُطبق عليه هذه المقاييس متاحًا وذا صلة بالمشكلة، إما من خلال عكس سلوك التطبيقات الواقعية، أو من خلال ملاءمته للمشكلة المحددة التي تسعى الخوارزمية إلى معالجتها. تستخدم المقالات الحديثة حول تخصيص السجلات بشكل خاص مجموعة معايير Dacapo. [ 60 ]
انظر أيضاً
- رقم ستراهلر ، وهو الحد الأدنى لعدد السجلات اللازمة لتقييم شجرة التعبير. [ 61 ]
- Register (keyword) ، التلميح في لغتي C و C++ لمتغير يتم وضعه في سجل.
- خوارزمية سيثي-أولمان ، وهي خوارزمية لإنتاج تخصيص السجلات الأكثر كفاءة لتقييم تعبير واحد عندما يتجاوز عدد السجلات المطلوبة لتقييم التعبير عدد السجلات المتاحة.
مراجع
- ^ ديتزل وماكليلان 1982 ، ص. 48.
- ^ رونسون ونيستروم 2003 ، ص. 242.
- 1 2 آيسل وآخرون. 2016 ، ص. 14:1.
- 1 2 شايتين وآخرون. 1981 ، ص. 47.
- 1 2 3 آيسل وآخرون. 2016 ، ص. 1.
- ↑ "أرقام مقارنة زمن الاستجابة في الحاسوب/الشبكة" . blog.morizyun.com. 6 يناير 2018. تم الاطلاع عليه بتاريخ 8 يناير 2019 .
- ↑ براون وهاك 2009 ، ص 174.
- ^ كويس وغولدشتاين 2009 ، ص. 21.
- 1 2 3 4 بوشيز، دارتي وراستيلو 2007ب ، ص. 103.
- ^ كولومبيت، براندنر ودارتي 2011 ، ص. 26.
- ↑ "دليل مطوري برامج معمارية Intel® 64 و IA-32، القسم 3.4.1" (ملف PDF) . Intel. مايو 2019. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 25-05-2019.
- ↑ "اتفاقيات استدعاء وظائف PowerPC ذات 32 بت" .
- ^ بوشيز، دارتي وراستيلو 2006 ، ص. 4.
- ^ هورويتز وآخرون. 1966 ، ص. 43.
- ^ فاراش وليبراتوري 1998 ، ص. 566.
- ↑ Eisl et al. 2017 ، ص 92.
- ^ ايسل وليوبولدسيدر وموسينبوك 2018 ، ص. 1.
- 1 2 3 بريغز، كوبر وتوركزون 1992 ، ص 316.
- ^ بوليتو وساركار 1999 ، ص. 896.
- ^ رونسون ونيستروم 2003 ، ص. 241.
- ↑ الكتاب 1975 ، ص 618-619.
- ↑ كورمن، توماس هـ.؛ ليسرسون، تشارلز إريك؛ ريفست، رونالد ل.؛ شتاين، كليفورد (2022). مقدمة في الخوارزميات (الطبعة الرابعة ). مطبعة معهد ماساتشوستس للتكنولوجيا. 15.1-4: مسألة تلوين الرسم البياني الفاصل. ISBN 9780262046305.
- ↑ كورمن، توماس هـ. (2022). دليل المعلم المصاحب لكتاب مقدمة في الخوارزميات، الطبعة الرابعة . مطبعة معهد ماساتشوستس للتكنولوجيا. الصفحات 219-220 .
- ^ كولومبيت، براندنر ودارتي 2011 ، ص. 1.
- ↑ سميث، رامزي وهولواي 2004 ، ص 277.
- 1 2 3 كافازوس، موس وأوبويل 2006 ، ص. 124.
- ^ رونسون ونيستروم 2003 ، ص. 240.
- ^ بوليتو وساركار 1999 ، ص. 895.
- ^ بوليتو وساركار 1999 ، ص. 902.
- ↑ Wimmer & Mössenböck 2005 ، ص 132.
- ^ يوهانسون وساجوناس 2002 ، ص. 102.
- ↑ تطور الفن - مؤتمر جوجل I/O 2016. جوجل . 25 مايو 2016. يبدأ الحدث عند الدقيقة 3 و47 ثانية.
- ↑ Paleczny, Vick & Click 2001 , ص. 1.
- ^ بوليتو وساركار 1999 ، ص. 899.
- ↑ إيسل وآخرون 2016 ، ص. 2.
- ↑ تراوب، هولواي وسميث 1998 ، ص 143.
- ↑ تراوب، هولواي وسميث 1998 ، ص 141.
- ^ بوليتو وساركار 1999 ، ص. 897.
- ↑ Wimmer & Franz 2010 ، ص 170.
- ↑ موسنبوك وبفايفر 2002 ، ص 234.
- ↑ موسنبوك وبفايفر 2002 ، ص 233.
- ↑ موسنبوك وفايفر 2002 ، ص 229.
- ↑ روجرز 2020 .
- ↑ تشايتين 1982 ، ص 90.
- 1 2 Ahn & Paek 2009 ، ص. 7.
- ↑ بارك ومون 2004 ، ص 736.
- ↑ تشايتين 1982 ، ص 99.
- ↑ بارك ومون 2004 ، ص 738.
- ↑ بريغز، كوبر وتوركزون 1994 ، ص 433.
- ^ جورج وأبيل 1996 ، ص. 212.
- ↑ بارك ومون 2004 ، ص 741.
- ↑ Eisl et al. 2017 ، ص. 11.
- ^ كافازوس، موس وأوبويل 2006 ، ص. 124-127.
- ↑ إيسل وآخرون 2016 ، ص 4.
- ^ ضيوف وآخرون. 2010 ، ص. 66.
- ↑ كوهين وروهو 2010 ، ص. 1.
- ^ ضيوف وآخرون. 2010 ، ص. 72.
- ^ بوشيز، دارتي وراستيلو 2007أ ، ص. 1.
- ^ بوليتو وساركار 1999 ، ص. 901-910.
- ↑ بلاكبيرن وآخرون 2006 ، ص 169.
- ^ فلاجوليه، راؤول وفويلمين 1979 .
مصادر
- آهن، مين ووك؛ بايك، يونهيونغ (2009). "تقنيات دمج السجلات لبنية سجلات غير متجانسة مع غربلة النسخ". معاملات ACM لأنظمة الحوسبة المدمجة . 8 (2): 1-37 . CiteSeerX 10.1.1.615.5767 . doi : 10.1145/1457255.1457263 . ISSN 1539-9087 . S2CID 14143277 .
- أهو، ألفريد ف.؛ لام، مونيكا س.؛ سيثي، رافي؛ أولمان، جيفري د. (2006). المترجمات: المبادئ والتقنيات والأدوات (الطبعة الثانية ). شركة أديسون-ويسلي لونغمان للنشر. ISBN 978-0321486813.
- أبيل، أندرو دبليو؛ جورج، لال (2001). "التخزين الأمثل للأجهزة CISC ذات عدد قليل من المسجلات". وقائع مؤتمر ACM SIGPLAN 2001 حول تصميم لغات البرمجة وتنفيذها - PLDI '01 . الصفحات 243-253 . CiteSeerX 10.1.1.37.8978 . doi : 10.1145/378795.378854 . ISBN 978-1581134148. S2CID 1380545 .
- باريك، راجكيشور؛ غروثوف، كريستيان؛ غوبتا، راهول؛ بانديت، فيناياكا؛ أودوبا، راغافيندرا (2007). "التخصيص الأمثل للسجلات على مستوى البت باستخدام البرمجة الخطية الصحيحة". لغات ومترجمات الحوسبة المتوازية . سلسلة محاضرات في علوم الحاسوب. المجلد 4382. الصفحات 267-282 . CiteSeerX 10.1.1.75.6911 . doi : 10.1007/978-3-540-72521-3_20 . ISBN 978-3-540-72520-6.
- بيرغنر، بيتر؛ دال، بيتر؛ إنجبرتسن، ديفيد؛ أوكيف، ماثيو (1997). "تقليل حجم الكود المتسرب عبر تسرب منطقة التداخل". وقائع مؤتمر ACM SIGPLAN 1997 حول تصميم لغات البرمجة وتنفيذها - PLDI '97 . الصفحات 287-295 . doi : 10.1145/258915.258941 . ISBN 978-0897919074. S2CID 16952747 .
- بلاكبيرن، ستيفن م.؛ غاير، صموئيل ز.؛ هيرزل، مارتن؛ هوسكينغ، أنتوني؛ جامب، ماريا؛ لي، هان؛ إليوت، ج.؛ موس، ب.؛ فانسالكار، آشيش؛ ستيفانوفيتش، داركو؛ فاندرونين، توماس؛ غارنر، روبن؛ فون دينكلاج، دانيال؛ ويدرمان، بن؛ هوفمان، كريس؛ خانغ، أسجد م.؛ ماكينلي، كاثرين س.؛ بنتزور، روتيم؛ ديوان، عامر؛ فاينبرغ، دانيال؛ فرامبتون، دانيال (2006). "معايير داكابو". وقائع المؤتمر السنوي الحادي والعشرين لجمعية ACM SIGPLAN حول أنظمة ولغات وتطبيقات البرمجة كائنية التوجه - OOPSLA '06 . ص 169. doi : 10.1145/1167473.1167488 . hdl : 1885/33723 . ISBN 978-1595933485. S2CID 9255051 .
- بوك، رونالد ف. (ديسمبر 1975). "كارب، ريتشارد م.، قابلية الاختزال بين المسائل التوافقية. تعقيد الحسابات الحاسوبية، وقائع ندوة حول تعقيد الحسابات الحاسوبية، عُقدت في الفترة من 20 إلى 22 مارس 1972، في مركز توماس ج. واتسون التابع لشركة آي بي إم، يوركتاون هايتس، نيويورك، حررها ميلر، ريموند إي.، وثاتشر، جيمس و.، دار بلينوم للنشر، نيويورك ولندن 1972، الصفحات 85-103". مجلة المنطق الرمزي . 40 (4): 618-619 . doi : 10.2307/2271828 . ISSN 0022-4812 . JSTOR 2271828 .
- بوشيه، فلورنت؛ دارت، آلان؛ راستيلو، فابريس (2006). "تخصيص السجلات: ما الذي يثبته برهان اكتمال NP الذي قدمه تشايتين وآخرون حقًا؟ أو إعادة النظر في تخصيص السجلات: لماذا وكيف". تخصيص السجلات: ما الذي يثبته برهان اكتمال NP الذي قدمه تشايتين وآخرون حقًا؟ . سلسلة محاضرات في علوم الحاسوب. المجلد 4382. الصفحات 2-14. doi : 10.1007 / 978-3-540-72521-3_21 . ISBN 978-3-540-72520-6.
- بوشيه، فلوران؛ دارت، آلان؛ راستيلو، فابريس (2007أ). "حول تعقيد دمج السجلات". الندوة الدولية حول توليد الشفرات وتحسينها (CGO'07) . الصفحات 102-114 . CiteSeerX 10.1.1.101.6801 . doi : 10.1109/CGO.2007.26 . ISBN 978-0-7695-2764-2. S2CID 7683867 .
- بوشيز، فلوران؛ دارتي، آلان؛ راستيلو، فابريس (2007ب). “حول تعقيد الانسكاب في كل مكان تحت نموذج SSA”. إشعارات ACM SIGPLAN . 42 (7): 103– 114. أرخايف : 0710.3642 . دوى : 10.1145/1273444.1254782 . ISSN 0362-1340 .
- براون، ماتياس؛ هاك، سيباستيان (2009). "تجاوز سعة السجلات وتقسيم النطاق الحي لبرامج SSA-Form". بناء المترجمات . سلسلة محاضرات في علوم الحاسوب. المجلد 5501. الصفحات 174-189 . CiteSeerX 10.1.1.219.5318 . doi : 10.1007/978-3-642-00722-4_13 . ISBN 978-3-642-00721-7ISSN 0302-9743
- بريغز، بريستون؛ كوبر، كيث د.؛ توركزون، ليندا (1992). "إعادة التجسيد". إشعارات ACM SIGPLAN . 27 (7): 311-321 . doi : 10.1145/143103.143143 . ISSN 0362-1340 .
- بريغز، بريستون؛ كوبر، كيث د.؛ توركزون، ليندا (1994). "تحسينات على تخصيص سجلات تلوين الرسوم البيانية". معاملات ACM في لغات البرمجة والأنظمة . 16 (3): 428-455 . CiteSeerX 10.1.1.23.253 . doi : 10.1145/177492.177575 . ISSN 0164-0925 . S2CID 6571479 .
- كافازوس، جون؛ موس، ج. إليوت ب.؛ أوبويل، مايكل ف. ب. (2006). "التحسينات الهجينة: أي خوارزمية تحسين نستخدم؟". بناء المترجمات . سلسلة محاضرات في علوم الحاسوب. المجلد 3923. الصفحات 124-138 . doi : 10.1007/11688839_12 . ISBN 978-3-540-33050-9ISSN 0302-9743
- تشايتين، غريغوري جيه؛ أوسلاندر، مارك أ؛ تشاندرا، أشوك ك؛ كوك، جون؛ هوبكنز، مارتن إي؛ ماركشتاين، بيتر دبليو (1981). "تخصيص السجلات عبر التلوين". لغات الحاسوب . 6 (1): 47-57 . doi : 10.1016/0096-0551(81)90048-5 . ISSN 0096-0551 .
- تشايتين، جي جي (1982). "تخصيص السجلات وتفريغها عبر تلوين الرسم البياني". وقائع ندوة SIGPLAN لعام 1982 حول بناء المترجمات - SIGPLAN '82 . الصفحات 98-101 . doi : 10.1145/800230.806984 . ISBN 978-0897910743. S2CID 16872867 .
- تشين، وي يو؛ لوه، غوي يوان؛ آشار، براتيك؛ تشين، كايو؛ تشنغ، بوكي (2018). "تخصيص السجلات لرسومات معالجات إنتل". وقائع الندوة الدولية لعام 2018 حول توليد الشفرات وتحسينها - CGO 2018. الصفحات 352-364 . doi : 10.1145/3168806 . ISBN 9781450356176. S2CID 3367270 .
- كوهين، ألبرت؛ روهو، إرفن (2010). "محاكاة المعالج والترجمة المجزأة للأنظمة المدمجة متعددة النوى غير المتجانسة". وقائع المؤتمر السابع والأربعين لأتمتة التصميم - DAC '10 . ص 102. CiteSeerX 10.1.1.470.9701 . doi : 10.1145/1837274.1837303 . ISBN 9781450300025. S2CID 14314078 .
- كولومبيه، كوينتين؛ براندنر، فلوريان؛ دارت، آلان (2011). "دراسة التسريب الأمثل في ضوء تحليل البنية المتجانسة". وقائع المؤتمر الدولي الرابع عشر حول المترجمات، والبنى، والتوليف للأنظمة المدمجة - CASES '11 . ص 25. doi : 10.1145/2038698.2038706 . ISBN 9781450307130. S2CID 8296742 .
- ديوف، بوبكر؛ كوهين، ألبرت؛ راستيلو، فابريس؛ كافازوس، جون (2010). "تخصيص السجلات المجزأ: تعقيد خطي دون تأثير سلبي على الأداء". بنى ومترجمات الأنظمة المدمجة عالية الأداء . سلسلة محاضرات في علوم الحاسوب. المجلد 5952. الصفحات 66-80 . CiteSeerX 10.1.1.229.3988 . doi : 10.1007/978-3-642-11515-8_7 . ISBN 978-3-642-11514-1ISSN 0302-9743
- ديتزل، ديفيد ر.؛ ماكليلان، إتش آر (1982). "تخصيص السجلات مجانًا". وقائع الندوة الدولية الأولى حول الدعم المعماري للغات البرمجة وأنظمة التشغيل - ASPLOS-I . الصفحات 48-56 . doi : 10.1145/800050.801825 . ISBN 978-0897910668. S2CID 2812379 .
- إيسل، جوزيف؛ غريمر، ماتياس؛ سيمون، دوغ؛ وورثينغر، توماس؛ موسنبوك، هانزبيتر (2016). "تخصيص السجلات القائم على التتبع في مُصرّف JIT". وقائع المؤتمر الدولي الثالث عشر حول مبادئ وممارسات البرمجة على منصة جافا: الآلات الافتراضية واللغات والأدوات - PPPJ '16 . الصفحات 1-11 . doi : 10.1145/2972206.2972211 . ISBN 9781450341356. S2CID 31845919 .
- إيسل، جوزيف؛ مار، ستيفان؛ وورثينجر، توماس؛ موسنبوك، هانزبيتر (2017). "سياسات تخصيص سجل التتبع" (ملف PDF) . وقائع المؤتمر الدولي الرابع عشر للغات المُدارة وبيئات التشغيل - Man Lang 2017. الصفحات 92-104 . doi : 10.1145/3132190.3132209 . ISBN 9781450353403. S2CID 1195601 .
- إيسل، جوزيف؛ ليوبولدسيدر، ديفيد؛ موسنبوك، هانزبيتر (2018). "تخصيص سجلات التتبع المتوازي". وقائع المؤتمر الدولي الخامس عشر للغات المُدارة وبيئات التشغيل - Man Lang '18 . الصفحات 1-7 . doi : 10.1145/3237009.3237010 . ISBN 9781450364249. S2CID 52137887 .
- كويس، ديفيد رايان؛ غولدشتاين، سيث كوبن (2009). "تفكيك تخصيص السجلات" . كُتب في نيس، فرنسا. وقائع ورشة العمل الدولية الثانية عشرة حول البرمجيات والمترجمات للأنظمة المدمجة . SCOPES '09. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 21-30 . ISBN 978-1-60558-696-0.
- فاراش، مارتن؛ ليبراتوري، فينتشنزو (1998). "حول تخصيص السجلات المحلية" . كُتب في سان فرانسيسكو، كاليفورنيا، الولايات المتحدة الأمريكية. وقائع الندوة السنوية التاسعة لجمعية آلات الحوسبة وجمعية الرياضيات الصناعية والتطبيقية حول الخوارزميات المنفصلة . SODA '98. فيلادلفيا، بنسلفانيا، الولايات المتحدة الأمريكية: جمعية الرياضيات الصناعية والتطبيقية. الصفحات 564-573 . ISBN 0-89871-410-9.
- فلاجو، ب .؛ راؤول، ج.س.؛ فيليمين، ج. (1979)، "عدد المسجلات المطلوبة لتقييم التعبيرات الحسابية"، علوم الحاسوب النظرية ، 9 (1): 99-125 ، doi : 10.1016/0304-3975(79)90009-4
- جورج، لال؛ أبيل، أندرو دبليو. (1996). "دمج السجلات المتكرر" . معاملات ACM في لغات البرمجة والأنظمة . 18 (3): 300-324 . doi : 10.1145/229542.229546 . ISSN 0164-0925 . S2CID 12281734 .
- هورويتز، إل بي؛ كارب، آر إم؛ ميلر، آر إي؛ وينوغراد، إس. (1966). "تخصيص سجلات الفهرس" . مجلة ACM . 13 (1): 43-61 . doi : 10.1145/321312.321317 . ISSN 0004-5411 . S2CID 14560597 .
- يوهانسون، إريك؛ ساغوناس، كونستانتينوس (2002). "تخصيص سجلات المسح الخطي في مُصرّف إرلانج عالي الأداء". الجوانب العملية للغات التصريحية . سلسلة محاضرات في علوم الحاسوب. المجلد 2257. الصفحات 101-119 . doi : 10.1007/3-540-45587-6_8 . ISBN 978-3-540-43092-6ISSN 0302-9743
- كورداهي، ف. ج.؛ باركر، أ. س. (1987). "REAL: برنامج لتخصيص السجلات". وقائع المؤتمر الرابع والعشرين لجمعية ACM/IEEE حول أتمتة التصميم - DAC '87 . الصفحات 210-215 . doi : 10.1145/37888.37920 . ISBN 978-0818607813. S2CID 17598675 .
- موسنبوك، هانزبيتر؛ فايفر، مايكل (2002). "تخصيص سجلات المسح الخطي في سياق شكل SSA وقيود السجلات". بناء المترجمات . سلسلة محاضرات في علوم الحاسوب. المجلد 2304. الصفحات 229-246 . doi : 10.1007/3-540-45937-5_17 . ISBN 978-3-540-43369-9ISSN 0302-9743
- نيكرسون، برايان ر. (1990). "تخصيص سجلات تلوين الرسوم البيانية للمعالجات ذات المعاملات متعددة السجلات". إشعارات ACM SIGPLAN . 25 (6): 40-52 . doi : 10.1145/93548.93552 . ISSN 0362-1340 .
- باليتشني، مايكل؛ فيك، كريستوفر؛ كليك، كليف (2001). "مُجمِّع خادم جافا هوت سبوت". وقائع ندوة أبحاث وتكنولوجيا آلة جافا الافتراضية (JVM01) . مونتيري، كاليفورنيا، الولايات المتحدة الأمريكية. الصفحات 1-12 . CiteSeerX 10.1.1.106.1919 .
- بارك، جينبيو؛ مون، سو-موك (2004). "دمج السجلات التفاؤلي". معاملات ACM في لغات البرمجة والأنظمة . 26 (4): 735-765 . CiteSeerX 10.1.1.33.9438 . doi : 10.1145/1011508.1011512 . ISSN 0164-0925 . S2CID 15969885 .
- بوليتو، ماسيميليانو؛ ساركار، فيفيك (1999). "تخصيص سجلات المسح الخطي". معاملات ACM في لغات البرمجة والأنظمة . 21 (5): 895-913 . CiteSeerX 10.1.1.27.2462 . doi : 10.1145/330249.330250 . ISSN 0164-0925 . S2CID 18180752 .
- روغرز، إيان (2020). "تخصيص السجلات العالمي الفعال". arXiv : 2011.05608 [ cs.PL ].
- رونيسون، يوهان؛ نيستروم، سفين-أولوف (2003). "تخصيص سجلات تلوين الرسوم البيانية القابل لإعادة الاستهداف للهياكل غير المنتظمة". البرمجيات والمترجمات للأنظمة المدمجة . سلسلة محاضرات في علوم الحاسوب. المجلد 2826. الصفحات 240-254 . CiteSeerX 10.1.1.6.6186 . doi : 10.1007/978-3-540-39920-9_17 . ISBN 978-3-540-20145-8ISSN 0302-9743
- سميث، مايكل د.؛ رامزي، نورمان؛ هولواي، جلين (2004). "خوارزمية معممة لتخصيص السجلات باستخدام تلوين الرسوم البيانية". إشعارات ACM SIGPLAN . 39 (6): 277. CiteSeerX 10.1.1.71.9532 . doi : 10.1145/996893.996875 . ISSN 0362-1340 .
- تراوب، عمري؛ هولواي، غلين؛ سميث، مايكل د. (1998). "الجودة والسرعة في تخصيص السجلات بالمسح الخطي". إشعارات ACM SIGPLAN . 33 (5): 142-151 . CiteSeerX 10.1.1.52.8730 . doi : 10.1145/277652.277714 . ISSN 0362-1340 .
- ويمر، كريستيان؛ موسنبوك، هانزبيتر (2005). "تقسيم الفترات الأمثل في مُخصِّص سجلات المسح الخطي". وقائع المؤتمر الدولي الأول لجمعية ACM/USENIX حول بيئات التنفيذ الافتراضية - VEE '05 . ص 132. CiteSeerX 10.1.1.394.4054 . doi : 10.1145/1064979.1064998 . ISBN 978-1595930477. S2CID 494490 .
- ويمر، كريستيان؛ فرانز، مايكل (2010). "تخصيص سجلات المسح الخطي على نموذج SSA". وقائع الندوة الدولية السنوية الثامنة لمعهد مهندسي الكهرباء والإلكترونيات/رابطة مكائن الحوسبة حول توليد الشفرات وتحسينها - CGO '10 . ص 170. CiteSeerX 10.1.1.162.2590 . doi : 10.1145/1772954.1772979 . ISBN 9781605586359. S2CID 1820765 .
روابط خارجية
- درس تعليمي في البرمجة العددية الصحيحة، مؤرشف بتاريخ 5 سبتمبر 2009 على موقع Wayback Machine
- مؤتمر البرمجة العددية والتحسين التوافقي، IPCO
- ورشة عمل أوسوا للتحسين التوافقي
- بوسشر، ستيفن؛ ونوفيلو، دييغو. يحصل GCC على إطار عمل مُحسِّن جديد . مقال حول استخدام GCC لتقنية SSA وكيف يُحسِّن الأداء مقارنةً بتقنيات IR القديمة.
- قائمة مراجع جمعية الدراسات الاجتماعية الأمريكية . فهرس شامل لأوراق البحث في جمعية الدراسات الاجتماعية الأمريكية.
- زاديك، ف. كينيث. "تطوير نموذج التعيين الفردي الثابت" مؤرشف في 2010-06-20 في Wayback Machine ، حديث ديسمبر 2007 حول أصول SSA.
- VV.AA. "تصميم المترجم القائم على SSA" (2014)
- الاقتباسات من CiteSeer
- كتيبات تحسين الأداء من تأليف أغنر فوغ - وثائق حول بنية معالج x86 وتحسين التعليمات البرمجية على مستوى منخفض
- تحسينات المُترجم
