# سجل المعالج

سِجِلّ المعالج أو مسجل المعالج (بالإنجليزية: Processor register)‏ في معمارية الحاسوب هي كمية صغيرة من الذاكرة المتوافرة على وحدة المعالجة المركزية بهدف تسريع عمليات الوصول مقارنة بالذواكر الأخرى، أي أنها تتيح للمعالج الوصول إلى البيانات المخزنة في السِّجِلاّت بشكل سريع جدًا. تدعم أغلب وليس كل الحواسيب ما يسمى مجموعة تعليمات بنية الحاسب حيث تتم عملية جر البيانات من مكان في الذاكرة إلى السِّجِلاّت. يكون من المناسب جدًا وضع هذه التعليمات البرمجية الأساسية بالقرب من وحدة المعالجة نظرا لتكرار استعمالها. تحتل سِّجِلاّت المعالج الجزء الأعلى من بنية الذاكرة وتمثل الطريق الأسرع للوصول بالبيانات لوحدة المعالجة المركزية.

## استخدامات السِّجِلاّت

تستخدم السِّجِلاّت (registers) غالباً كمكان تخزين مؤقت للتعليمات والبيانات الجاري تنفيذها إضافة لاستخدامات خاصة مثل عنونة الذاكرة والتحكم في مسار تنفيذ التعليمات والقيام بتنفيذ مهام متخصصة. أهميتها تكمن في تخزين قيم ونواتج العمليات الحسابية بشكل سريع جداً لأن هذه السِّجِلاّت داخلة في تركيبة المعالج بعكس الذاكرة الرئيسة أو الرام وحتى ذاكرة الكاش (cache). لقرب السِّجِلاّت من وحدة التنفيذ (execute unit) في المعالج؛ بالتالي لا يوجد تأخير في جلب البيانات والنتائج المؤقتة. في الواقع وحدة التنفيذ والسِّجِلاّت هي المكان الحقيقي لتنفيذ التعليمات وتشغيل البرامج وأنظمة التشغيل.
إضافة لاستخدامات مخصصة للسِّجِلاّت مثل عنونة الذاكرة بجعل قيمة إحدى السِّجِلاّت تساوي قيمة عنوان الذاكرة المطلوب تخزينه أو جلب البيانات منه. وهذا يغني المبرمج عن كتابة العنوان الحقيقي للذاكرة في كل مرة داخل البرنامج.
استخدام آخر وهو التعامل مع منافذ الإدخال والإخراج (input/output ports) حيث توفر السِّجِلاّت عنوان جميع الأجهزة التي يتم ربطها بالمعالج كلوحة المفاتيح مثلاً..

## أصناف السِّجِلاّت

تقاس السِّجِلاّت عادة بعدد البتات الممكن خزنها، على سبيل المثال، سجل "8-بت أو سجل "32-بت". أصبحت السِّجِلاّت اليوم مضمنة كملف سجل، إلا أنه تم تضمينها قبل في القلابات ذاكرة نواة، ذاكة رقاقة فيلم، والعديد من الطرق على مختلف الآلات.
يحوي المعالج غالبا بعض السِّجِلاّت المختلفة، التي يمكن تصنيفها تبعا لمحتوياتها أو التعليمات التي تعمل بها: أولا:
* سِّجِلاّت قابلة لوصول المستخدم: وهي سجلات يمكن الكتابة أو القراءة منها عن طريق الأوامر.
* سِّجِلاّت بيانات: وهي سجلات تحتوي على قيم عددية كالـ Integer أو float-point وأيضا characters وsmall arrays وفي بعض المعالجات القديمة والبطيئة ستجد سجلّ بيانات يسمى المجمّع accumulator يستخدم ضمنيا لتنفيذ الكثير من العمليات.
* سِّجِلاّت عنوان: وهي سجلات تستخدم لتصل للعناوين والتي تتوصل إليها بطريق غير مباشر الذاكرة الابتدائية.
تستخدم بعض سجلات العنوان فقط لتستخرج العنوان أو فقط لتستخرج القيمة العددية (أحيانا يستخدم كسجل المؤشر index register والذي تستخرج القيمة منه لتصبح عوضا لبعض العناوين.
* سِّجِلاّت لأغراض عامّة : تستخدم لتخزين البيانات والعناوين سويا، مثلا تضم سجلّات بيانات وسجلّات عناوين.
* سِّجِلاّت شرطية: هي سجلات تحتوي على truth values والتي تستخدم لتحديد هل يجب تنفيذ الأمر أم لا.
* سِّجِلاّت النقطة العائمة (floating point registers المختزلة FPR)
* سِّجِلاّت ثوابت: تحتوي على القيم المحفوظة من الأصل في الذاكرة والتي تكون للقراءة فقط read-only مثل ال 0، 1، باي
* سِّجِلاّت متجه: تحتوي على البيانات الخاصة بتنفيذ عمليات المتجهات باستخدام SIMD (Single Instruction Multiple Data)
* سِّجِلاّت أغراض خاصة
* ســِـجــِـلاّت تعليمات
* سِّجِلاّت التحكم والحالة.
* سِّجِلاّت أخرى

## دور عدد السِّجِلاّت المتاحة في المعالج

يعتمد أداء الكود أو شفرة البرنامج بشكل ملحوظ على عدد السِّجِلاّت المتاحة في المعالج. يطلق على أقل عدد لازم من السِّجِلاّت لتقييم تعبير ما اسم عدد سترولر.

### أمثلة

يبين الجدول عدد السـّـِـجــِـلاّت لمعماريات مختلفة.
| البنية | سِّجِلاّت أعداد صحيحة | سِّجِلاّت مضاعفة |
| إكس 86 | 8 | 8 |
| إيه إم دي 64 | 16 | 16 |
| إيتانيوم | 128 | 128 |
| UltraSPARC | 32 | 32 |
| القوة (توضيح) | 32 | 32 |
| دي إي سي ألفا $^{[لغاتأخرى]}$‏ | 32 | 32 |
| 6502 | 3 | 0 |
| بك (متحكم دقيق) | 1 | 0 |
| أتمل إيه في آر | 32 | 0 |
| إيه.آر.إم | 16 | 16 |