إعادة التجسيد

في علوم الحاسوب ، تُعدّ إعادة التجسيد ( remat) تحسينًا للمترجمات البرمجية ، حيث توفر الوقت عن طريق إعادة حساب قيمة ما بدلًا من تحميلها من الذاكرة. وعادةً ما تُدمج هذه التقنية بشكل وثيق مع تخصيص السجلات ، حيث تُستخدم كبديل لتفريغ السجلات إلى الذاكرة. وقد طُوّرت هذه التقنية على يد كلٍّ من غريغوري تشايتين ، ومارك أوسلاندر ، وأشوك تشاندرا ، وجون كوك ، ومارتن هوبكنز ، وبيتر ماركشتاين ، ونُفّذت في مترجم Pl.8 للحاسوب المصغر 801 في أواخر سبعينيات القرن الماضي. وأُدخلت تحسينات لاحقة عليها من قِبل بريستون بريغز ، وكيث د. كوبر ، وليندا توركزون في عام 1992.

تركز التحسينات التقليدية، مثل حذف التعبيرات الفرعية المتكررة ورفع ثوابت الحلقات، غالبًا على التخلص من العمليات الحسابية الزائدة. ولأن هذه العمليات تتطلب دورات معالجة ، يُعدّ هذا أمرًا جيدًا في العادة، إلا أنه قد يُؤدي إلى آثار جانبية مدمرة، إذ يُمكن أن يزيد من نطاقات بقاء المتغيرات ويُنشئ العديد من المتغيرات الجديدة، مما يُسبب تجاوزات في الذاكرة أثناء تخصيص السجلات. أما إعادة التخصيص، فهي عكس ذلك تمامًا: إذ تُقلل الضغط على السجلات عن طريق زيادة حجم العمليات الحسابية التي تُجريها وحدة المعالجة المركزية. ولتجنب إضافة وقت حسابي أكثر من اللازم، لا تُجرى إعادة التخصيص إلا عندما يتأكد المُصرّف من فائدتها ، أي عندما يُحتمل حدوث تجاوز في الذاكرة.

تعتمد عملية إعادة التجسيد على تتبع التعبير المستخدم لحساب كل متغير، وذلك باستخدام مفهوم التعبيرات المتاحة . أحيانًا، تُعدّل المتغيرات المستخدمة لحساب قيمة ما، وبالتالي لا يمكن استخدامها لإعادة تجسيد تلك القيمة. يُقال حينها إن التعبير لم يعد متاحًا. يجب أيضًا استيفاء معايير أخرى، مثل الحد الأقصى لتعقيد التعبير المستخدم لإعادة تجسيد القيمة؛ إذ لا فائدة من إعادة تجسيد قيمة باستخدام عملية حسابية معقدة تستغرق وقتًا أطول من وقت التحميل. عادةً، يجب ألا يكون للتعبير أي آثار جانبية .

  • تشايتين، غريغوري، مارك أوسلاندر، أشوك تشاندرا، جون كوك، مارتن هوبكنز، وبيتر ماركشتاين. "تخصيص السجلات عبر التلوين، لغات الحاسوب، المجلد 6، العدد 1، 1981، الصفحات 47-57"
  • ب. بريغز، ك. د. كوبر، و ل. توركزون. إعادة التجسيد . وقائع مؤتمر SIGPLAN 92 حول تصميم وتنفيذ لغات البرمجة ، SIGPLAN Notices 27(7)، ص 311-321. يوليو 1992.
  • موكتا بنجابي. إعادة تسجيل البيانات في GCC . تناقش تطبيق GCC لإعادة تسجيل البيانات.