# إم إم إكس (مجموعة تعليمات)

MMX هي مجموعة تعليمات سيمد أي تعليمة واحدة على بيانات متعددة صممتها إنتل وتم تقديمها في 1996 مع إنتاج خط معالجة دقيقة بنتيوم P-5، ووُصِفت بأنها "بنتيوم بتكنولوجيا “MMX. وقد تم تطويره من وحدة مشابهة تم تقديمها أول مرة في إنتل i860]]. MMX هي قدرة المعالج التكميلية المضافة إلى معالجات انتل أي إيه-32 أو أي منتجات أخرى.

## التسمية

MMX هو اسم تاجي لعلامة تجارية لا معنى له أطلقته إنتل؛ وبشكل غير رسمي، فقد فسرت الحروف الأولية بأنها ترمز إلى MultiMedia eXtension أو Multiple Math eXtension أو Matrix Math eXtension. أنتجت شركة إيه إم دي، وفي إحدى معاركها المتعددة مع شركة إنتل، مواد تسويقية من إنتل تشير إلى أن MMX ترمز إلى امتداد مصفوفة الرياضيات "Matrix Math Extensions". وفكرة أن هذه الرموز لا معنى لها، هي فكرة من شركة إنتل للإيحاء بأنها علامة تجارية خاصة ولا يجوز لشركة إيه إم دي استعمالها أو أي شركة مصنعة لنسخ من X86 في دعايتها الخاصة.

## تفاصيل فنية

يُعرف MMX ثمانية سجلات لوحدة المعالجة المركزية، تعرف باسم MM0 وحتى MM7 (يرمز إليها بـ MMn حيث يكون n هو الرقم المشار إليه). ولتجنب مشاكل التوافق مع إستراتيجية استبدال الآليات في أنظمة التبديل الحالية، مثلت تلك السجلات أسماء مستعارة لسجلات وحدة x87 الفاصلة العائمة المكدسة (وبهذا لا نكون في حاجة إلى حفظ أو استرجاع أي سجلات جديدة). وبهذا، فإن كل ما حدث للنقطة العائمة المكدسة سوف يؤثر على سجلات MMX والعكس. وبالرغم من ذلك، وبعكس الفاصلة العائمة المكدسة، فإن سجلات MMn يمكن مخاطبتها مباشرة (وصول عشوائي). وكل من سجلات MMn تحمل 64 بت (الجزء العشري من 80 بت من سجل وحدة المعالجة المركزية). إن الاستعمال الرئيسي لمجموعة تعليمات MMX يرتكز على مفهوم أنواع البيانات المكدسة، والذي يعني أنه بدلاً من استعمال السجل بأكمله لعدد 64 بت صحيح، يمكن معالجة عددين 32 بت صحيحين، أو أربعة أعداد 16 بت صحيحة، أو ثمانية اعداد 8 بت صحيحة بشكل متزامن. وقد جعل تنظيم سجلات MMX على سجلات وحدة المعالجة المركزية القائمة من الصعب العمل مع النقطة العائمة وبيانات سيمد في نفس التطبيق. ولتحسين الأداء، قام المبرمجون باستخدام المعالج حصرياً في نمط واحد فقط منهما، مع إطالة التبديل البطئ نسبياً بينهم إلى أقصى وقت ممكن. ولأن سجلات وحدة المعالجة المركزية المكدسة تبعد 80 بيت، فإن الـ 16 بت العلويين من السجلات المكدسة لا يتم استعمالها من خلال MMX، وكل هذه البت يتم تحويلها إلى أحاد، فيصبحوا NaNs أو أعداد لا متناهية في تمثيل الفاصلة العائمة. تُستعمل هذه التقنية لتحديد إذا كان محتوى سجل معين يُرغب به كفاصلة عائمة أو بيانات سيمد. يقوم MMX بعمليات صحيحة فقط. فعندما تم تطويره، لإنتل i860، أصبح استخدام الرياضيات الصحيحة ذات معنى (تحتاجه كل من حسابات 2D و3D)، ولكن عند انتشار بطاقات الرسومات التي تقوم بتلك الحسابات، أصبح صحيح سيمد إلى حد ما زائد عن حاجة التطبيقات الرسومية. وعلى الجانب الأخر، عمليات التشبع الحسابي في MMX يمكنها أن تسرع المعالجة الرقمية للإشارة لبعض التطبيقات بشكل ملحوظ.

## الجيل الجديد

قامت إيه إم دي، شركة منافسة لبيع معالج x86 الدقيق، بتعزيز MMX الخاص بشركة إنتل بمجموعة تعليمات 3DNow! الخاصة بهم. وهو يشتهر بإضافة فاصلة عائمة واحدة دقيقة (32 بت) لمساندة مجموعة تعليمات سيمد، بالإضافة إلى أعداد صحيحة أخرى وتعديلات عامة. وبعد MMX، جاء SSE ليكون أهم امتداد x86 قامت به شركة إنتل، ليتم تقديمه مع عائلة بنتيم 3 (بالكاد بعد مرور عام من إنتاج شركة إيه إم دي لـ 3DNow!). واجه SSE العيوب الرئيسية في MMX (عدم القدرة على خلط العمليات على الأعداد الصحيحة سيمد مع عمليات الفاصلة العائمة) وهذا عن طريق إنشاء سجل ملف جديد ذو سعة 128 بت (XMM0 – XMM7) وتعليمات سيمد الجديدة تتماشى معه. ومثل 3DNow!، ركز SSE حصرياً على عمليات فاصلة عائمة واحدة دقيقة (32 بت)؛ والعمليات على الأعداد الصحيحة سيمد ما زالت قائمة بواسطة سجل ومجموعة تعليمات MMX. وبالرغم من ذلك، فقد سمح سجل ملف XMM الجديد لعمليات سيمد في SSE أن تندمج مع كل من عمليات MMX أو وحدة المعالجة المركزي لـ x86. تم تقديم SSE2 مع بنتيم 4، وقد مدّ مجموعة تعليمات سيمد x86 مع (8/16/32 بت) صحيح مع بيانات مساعدة لفاصلة عائمة مزدوجة الدقة لسجل ملف XMM. وقد سمح SSE2 لشيفرة عمليات MMX باستخدام معاملات سجل XMM، ولكن تم إنهاء هذا الدعم بتقديم SSE4 (مؤخراً SSE4.2، الذي تم تقديمه في المعمارية المصغرة كور). ولكن، وحيث أن دعم المعالج لأي نسخة من SSE يتضمن دعم لـ MMX، فان إزالة الدعم لا تحد من أنواع البيانات المستخدمة في سيمد x86.

## MMX في التطبيقات المدمجة

إن معالجات إنتل XScale بدءا من PXA270 تتضمن امتداد للب إيه أر إم المسمى iwMMXt ووظائفه مشابهة لوظائف امتداد أي إيه-32 MMX. ترمز IwMMX إلى «تكنولوجيا MMX إنتل اللاسلكية». وهي تقدم عمليات حسابية ومنطقية على أعداد صحيحة 64 بت (وقد تختار برمجيات الحاسوب أن تقوم بعمليتين 32 بت، أو أربعة 16 بت، أو ثمانية عمليات 8 بت في مجموعة واحدة). يحتوي الامتداد على 16 سجل بيانات 64 بت وثمانية سجلات تحكم 32 بت. يتم الوصول لجميع السجلات من خلال آلية معمارية إيه أر إم لتعيين وحدة التشغيل. يشغل iwMMXt وحدات تشغيل فراغ 0 و 1، وبعض من شفرات عملياته تتعارض مع شفرات عمليات الامتداد السابق للفاصلة العائمة، مسرع الفاصلة العائمة.