در علوم رایانه، واژه **اِندیان** یا **اِندیَن** (به انگلیسی:Endian) اشاره به چینش تک-مؤلفه‌های فرعی آدرس‌پذیری دارند که داخل یک داده بزرگتر در یک حافظه جانبی ذخیره گردیده است.(یا گاه، به یک ارتباط سریال ارسال گردیده است)

ریشه‌شناسی
----------

بیگ اندین
**اندین** یا Endian استعاره‌ای است به اختلاف دو قوم لی‌لی‌پوتی بر سر جهت بریدن سر تخم‌مرغ آبپز در ماجراهای گالیور. یکی از این دوقوم تخم‌مرغ آبپز را به روش سنتی از سر پهنتر باز میکردند که به **بیگ اندین** یا Big Endian معروف بودند و دیگری معتقد به بریدن سر کوچکتر تخم‌مرغ بودند که به ایشان **لیتل اندین** یا Little Endian گفته می شد.

در علم کامپیوتر
---------------

لیتل اندین
هر بایت از حافظه آدرس منحصر به فرد خود را داراست و محتوای یک متغیر n بایتی، یک خانه ی n بایتی را از حافظه را اشغال می‌کند. یک رایانه **بیگ اندین** بایت پرارزش متغیر را در ابتدایی‌ترین خانه حافظه ذخیره میکند، در حالیکه یک رایانه **لیتل اندین** کم ارزش‌ترین بایت متغیر را در ابتدایی‌ترین خانه حافظه ذخیره مینماید. چنانچه در شکلهای روبرو می بینیم اگر داده خود را 0A0B0C0Dh در نظر بگیریم در سیستم‌های بیگ اندین 0Ah در اولین خانه حافظه دخیره می‌شود در حالیکه در سیستم‌های لیتل اندین در آخرین فضای حافظه جای گرفته‌است. برای داده 0000111111110000b نیز به همین ترتیب، ۸ بیت پر ارزش، یعنی 00001111b در سیستم بیگ اندین در ابتدایی‌ترین خانه حافظه و در سیستم لیتل اندین در آخرین خانه حافظه می‌گیرد.

همچنین حالت سومی با نام *میدل اندین* یا Middle Endian وجود دارد که حالت‌های بسیار متفاوتی دارد. مثلاً در PDP-11 کامپایلر مقادیر را مانند روش بیگ اندین اما با فرمت ۱۶ بیتی لیتل اندین ذخیره می‌کند. به عنوان مثال، مقدار ۳۲ بیتی 0A0B0C0Dh همان‌طور که در شکل زیر مشخص است، به صورت 0B0A0D0Ch ذخیره می‌شود. این حالت خاص، به *لیتل اندین ۱۶ بیتی* یا *16 Bit Little Endian* معروف است.

|  |
| --- |
| *جهت افزایش مقدار آدرس حافظه:*   → |
| … | 0Ch | 0Dh | 0Ah | 0Bh | … |

بی اندین
--------

سخت افزارهای دارای معماری **بی اندین** قابلیت سوئیچ بین دو حالت بیگ اندین و لیتل اندین را در سگمنت داده، سگمنت کد یا هر دو سگمنت را دارد. بسیاری از این سخت افزارها قابلیت انتخاب فرمت پیش‌فرض اندین را از طریق نرم‌افزار دارند، اما در برخی از آن‌ها نیز حالت اندین را مادربرد انتخاب می‌کند و قابل تغییر نیست.

تفاوت‌ها
--------

در حالت لیتل اندین، در صورتی که مقدار AB000000h در خانه‌ای ۴ بایتی از حافظه قرار داشته باشد، و چهار متغیر داشته باشیم که به این خانه از حافظه اشاره کنند، متغیر ۸ بیتی دارای ABh، متغیر ۱۶ بیتی دارای 00ABh، متغیر ۲۴ بیتی دارای 0000ABh و متغیر ۳۲ بیتی دارای 000000ABh خواهد بود. که در همه این چهار متغیر، مقدار مقدار عددی برابر با هم را خواهند داشت. هرچند این قابلیت سیستم‌های لیتل اندین بسیار به ندرت توسط برنامه نویسان یک زبان برنامه‌نویسی سطح بالا مانند زبان سی شارپ استفاده می‌شود، اما در برخی زبان‌ها مانند زبان اسمبلی جهت بهینه‌سازی نرم‌افزار و همچنین سیستم عامل‌ها بسیار کاربردی است. همچنین بسیاری از زبان‌های سطح بالای امروزی مانند PHP چنین قابلیتی ندارند.

سخت افزارها
-----------

معماری‌های مختلف از شیوه‌های متفاوتی استفاده می‌کنند. به عنوان مثال در معماری ۳۲ بیتی x86 اینتل و نسخه ۶۴ بیتی آن که به X86-64 ای ام دی معروف است و امروزه در کامپیوترهای رومیزی استفاده‌های فراوانی دارند، از سیستم لیتل اندین استفاده می‌شود، در حالی که در معماری IBM z/Architecture از سیستم بیگ اندین استفاده می‌شود. معماری ARM نیز که در دستگاه‌های کوچک مانند تلفن‌های هوشمند و تبلت‌ها پرکاربرد هستند، بی اندین است و قابلیت سوییچ کردن بین حالت‌های بیگ اندین، لیتل اندین و میدل اندین را داراست.

شبکه
----

در شبکه، network order در بسیاری از RFC‌ها تعبیه شده‌است. در صورتی که چنین چیزی در RFC مربوط پیش‌بینی نشده باشد، معمولاً از روش بیگ اندین که در RFC 1700 ( استاندارد اینترنت ) تعبیه شده است، استفاده می‌شود، هرچند تمامی پروتکل‌ها به این روش پایبند نیستند.

فایل‌ها
-------

فایل‌های داده‌ای مانند فایل‌های متنی txt، از روش بیگ اندین استفاده می‌کنند اما فایل‌های متنی یونیکد می‌توانند با چند بایت خاص که به BOM مشهورند شروع شوند و نوع قرارگیری بایت‌ها را مشخص کنند.
فایل‌های تصاویر TIFF نیز با توجه به اینکه دارای پرچمی خاص هستند، قابلیت استفاده از هر دو حالت را دارند.
بنابراین هر نوع فایل می‌تواند از هر روشی خاص جهت ذخیره‌سازی استفاده کنند و بستگی به شیوه مهندسی آن نرم‌افزار خاص دارد.

همچنین، فایل‌های اجرایی برنامه ها، با توجه به نوع کامپایلر می‌تواند متفاوت باشد که این مسئله باعث می‌شود یک برنامه که توسط کامپایلر بیگ اندین کامپایل شده، در سیستم‌های لیتل اندین قابل اجرا نباشد. برخی از کامپایلرها قابلیت انتخاب ایندین توسط کاربر را دارند. برخی نیز به صورت خودکار، حالت ذخیره خود را تغییر می دهند و روی سخت افزارهای مختلف قابل اجرا هستند. در صورتی که کامپایلر از این قابلیت پشتیبانی نکند و برنامه‌نویس بخواهد که فایل کامپایل شده نرم‌افزارش بر روی تمامی سیستم‌ها اجرا شود باید خود دست به کار شود.
خروجی برخی زبان‌ها مانند Java و جاوااسکریپت و PHP مستقل از سخت افزار هستند. برنامه‌های کامپایل شده JAVA، در زمان اجرا توسط JRE خوانده شده و با توجه به سخت افزار نوع آن انتخاب می‌شود اما PHP و JavaScript نیازی به کامپایل ندارند و مفسر PHP و مرورگر، آن‌ها را مانند یک فایل متنی خوانده و اجرا می‌کند. هرچند فایل‌های PHP را می‌توان با نرم‌افزارهای مختلف کامپایل کرد و این فایل‌ها و باز هم مستقل از سخت افزار هستند، چون وابسته به خود مفسر php هستند.
زبان‌هایی که دارای مفسر هستند، مستقل از سخت افزار هستند، مانند زبان‌های PHP و جاوااسکریپت. این زبان‌ها برخلاف زبان‌های سطح پایین، معمولاً دسترسی چندانی به خانه‌های حافظه نمی‌دهند، هرچند برای زبان‌هایی مانند PHP می‌توان افزونه‌هایی نوشت تا دسترسی به خانه‌های حافظه را ممکن سازد اما در زبان‌هایی مانند JavaScript چنین چیزی به دلایل امنیتی غیرممکن است.

روش تغییر ایندین
----------------

نمونه کد زیر که به زبان C می‌باشد، یک مقدار عددی ۳۲ بیتی بدون علامت را دریافت کرده و آن را از حالت بیگ اندین به لیتل اندین و بلعکس تبدیل می‌کند.

```
/\* C function to change endianness for byte swap in an unsigned 32-bit integer \*/

uint32\_t ChangeEndianness(uint32\_t value)
{
 uint32\_t result = 0;
 result |= (value & 0x000000FF) << 24;
 result |= (value & 0x0000FF00) << 8;
 result |= (value & 0x00FF0000) >> 8;
 result |= (value & 0xFF000000) >> 24;
 return result;
}

```

منابع
-----

ویکی‌پدیای انگلیسی، Friday - 2015 29 May

* Danny Cohen (1980-04-01). *On Holy Wars and a Plea for Peace*. IETF. IEN 137.. Also published at *IEEE Computer*, October 1981 issue.
* David V. James (June 1990). "Multiplexed buses: the endian wars continue". *IEEE Micro*. **10** (3): 9–21. doi:10.1109/40.56322. ISSN 0272-1732. Retrieved 2008-12-20.
* Bertrand Blanc, Bob Maaraoui (December 2005). "Endianness or Where is Byte 0?" (PDF). Retrieved 2008-12-21. `{{cite journal}}`: Cite journal requires `|journal=` (help)

| * ن
* ب
* و
فناوری‌های واحد پردازش مرکزی |
| --- |
| مدل‌های محاسبه | 
* ماشین تورینگ
	+ ماشین محاسبه تورینگ
	+ ماشین پست-تورینگ
	+ ماشین تورینگ کوانتومی
* Belt machine
* ماشین پشته‌ای
* ماشین حالات متناهی
	+ with datapath
	+ ماشین حالت یو.ام.ال
	+ ماشین صف
* Register machines
	+ Counter
	+ Pointer
	+ Random-access
	+ ماشین برنامه ذخیره‌شده با دسترسی تصادفی

 |
| معماری رایانه | 
* ریزمعماری
* معماری فون نویمان
* معماری هاروارد
	+ modified
* معماری جریان داده
* Transport-triggered
* Cellular
* اندیان
* ذخیره‌سازی داده رایانه
	+ حافظه دسترسی غیریکپارچه
	+ HUMA
	+ Load/store
	+ معماری حافظه ثبات
* Cache hierarchy
* سلسله‌مراتب حافظه
	+ حافظه مجازی
	+ ذخیره‌سازی داده رایانه
* Heterogeneous
* Fabric
* چندپردازشی
* رایانش شناختی
* نورومورفیک

 |
| مجموعه دستورالعملs | 

|  |  |
| --- | --- |
| Types | 
* رایانه با دستورهای پیچیده
* رایانه کم‌دستور
* Application-specific
* EDGE
	+ TRIPS
* کلمه دستورالعمل بسیار طولانی
	+ رایانش موازی صریح دستورالعمل‌ها
* MISC
* OISC
* NISC
* ZISC
* comparison
	+ حالت آدرس‌دهیs

 |

* اکس۸۶
* معماری آرم
* معماری میپس
* Power ISA
* اسپارک
* Itanium
* Unicore
* MicroBlaze
* RISC-V
* others
 |
| Execution | 

|  |  |
| --- | --- |
| خط لوله (رایانه) | 
* حباب (رایانه)
* Operand forwarding
* Classic RISC pipeline

 |
| مخاطره (معماری رایانه)s | 
* وابستگی داده
* مخاطره (معماری رایانه)
* مخاطره (معماری رایانه)
* False sharing

 |
| خروج از دستور در حال اجرا | 
* Tomasulo algorithm
	+ Reservation station
	+ Re-order buffer
* تغییر نام ثبات

 |
| Speculative | 
* پیش‌بینی‌کننده پرش
* Memory dependence prediction

 |

 |
| رایانش موازی | 

|  |  |
| --- | --- |
| Level | 
* موازی‌سازی بیتی
	+ Bit-serial
	+ کلمه (معماری رایانه)
* دستورالعمل
* خط لوله (رایانه)
	+ Scalar
	+ سوپراسکالر
* Task
	+ ریسه (رایانه)
	+ فرایند (رایانه)
* Data
	+ پردازنده برداری
* Memory
* رایانش توزیع‌شده

 |
| چندریسمانی | 
* چندرشته زمانی
* چندرشتگی همزمان
	+ فراریسمانی
* Speculative
* قبضه‌کردن (رایانش)
* چند وظیفه‌ای بدون قبضه‌ای

 |
| طبقه‌بندی فلین | 
* یک دستور یک داده
* یک دستور چند داده
	+ SWAR
* SIMT
* چند دستور یک داده
* چند دستور چند داده
	+ یک برنامه چند داده

 |

 |
| Processorperformance | 
* Transistor count
* Instructions per cycle (IPC)
	+ Cycles per instruction (CPI)
* Instructions per second (IPS)
* فلاپس (FLOPS)
* تراکنش بر ثانیه (TPS)
* Synaptic updates per second (SUPS)
* Performance per watt (PPW)
* Cache performance metrics
* Computer performance by orders of magnitude

 |
| Types | 
* واحد پردازش مرکزی (CPU)
* واحد پردازش گرافیکی (GPU)
	+ محاسبات همه‌منظوره بر روی واحد پردازش گرافیکی
* پردازنده برداری
* Barrel
* پردازش جریان
* Coprocessor
* مدارهای مجتمع با کاربرد خاص
* مدار مجتمع دیجیتال برنامه‌پذیر
* CPLD
* Multi-chip module (MCM)
* System in package (SiP)

|  |  |
| --- | --- |
| By application | 
* ریزپردازنده
* ریزکنترل‌گر
* Mobile
* Notebook
* Ultra-low-voltage
* ASIP

 |
| Systemson chip | 
* سامانه روی یک تراشه (SoC)
* Multiprocessor (MPSoC)
* Programmable (PSoC)
* شبکه درون یک تراشه (NoC)

 |
| شتاب‌دهنده سخت‌افزاری | 
* AI accelerator
* Vision processing unit (VPU)
* Physics processing unit (PPU)
* پردازشگر سیگنال دیجیتال (DSP)
* واحد پردازشی تنسور (TPU)
* Secure cryptoprocessor
* پردازنده‌های شبکه‌ای
* Baseband processor

 |

 |
| کلمه (معماری رایانه) | 
* معماری ۱-بیتی
* بیت برش
* ۴-بیت
* ۸ بیتی
* ۱۶ بیتی
* ۳۲-بیت
* 48-bit
* 64-bit
* ۱۲۸-بیت
* 256-bit
* 512-bit
* کلمه (معماری رایانه)
	+ کلمه (معماری رایانه)

 |
| Core count | 
* Single-core
* پردازنده چندهسته‌ای
* Manycore
* Heterogeneous architecture

 |
| اجزاء | 
* واحد پردازش مرکزی
* حافظه نهان (رایانش)
	+ حافظه نهان سی‌پی‌یو
	+ الگوریتم حافظه پنهان
	+ انسجام حافظه نهان
* گذرگاه (رایانه)
* سرعت ریزپردازنده
* سیگنال ساعت
* خروج به ترتیب ورود (رایانه و الکترونیک)

|  |  |
| --- | --- |
| Functional units | 
* واحد محاسبه و منطق (ALU)
* Address generation unit (AGU)
* واحد ممیز شناور (FPU)
* واحد مدیریت حافظه (MMU)
	+ Load–store unit
	+ تی‌ال‌بی (TLB)
* کنترلگر حافظه (IMC)

 |
| دروازه منطقی | 
* مدار ترکیبی
* مدارهای ترتیبی
* Glue
* دروازه منطقی
	+ دروازه‌های منطقی کوانتومی
	+ دروازه آرایه

 |
| ثبت سخت‌افزاریs | 
* ثبات
* ثبات وضعیت
* ثبات پشته‌ای
* Register file
* Memory buffer
* شمارنده برنامه

 |
| Control unit | 
* Instruction unit
* حافظه میانگیر
* Write buffer
* ریزبرنامه‌سازی تصویر رام
* شمارنده

 |
| دیتاپد | 
* تسهیم‌کننده
* تسهیم‌کننده
* جمع‌کننده
* ضرب‌کننده دودویی
	+ پردازنده چندبرابر
* رمزگشا
	+ Address decoder
	+ Sum addressed decoder
* شیفت دهنده بشکه‌ای

 |
| مدار الکترونیکی | 
* مدار مجتمع
	+ 3D
	+ Mixed-signal
	+ Power management
* مدار بولی
* الکترونیک دیجیتال
* الکترونیک آنالوگ
* Quantum
* کلید (مدار)

 |

 |
| مدیریت نیرو | 
* PMU
* APM
* رابط قدرت و تنظیمات پیشرفته
* درجه‌بندی پویای بسامد
* Dynamic voltage scaling
* Clock gating
* Performance per watt (PPW)
* Race to sleep

 |
| مرتبط | 
* History of general-purpose CPUs
* Microprocessor chronology
* طراحی پردازنده
* الکترونیک دیجیتال
* ماژول امنیتی سخت‌افزاری
* Semiconductor device fabrication
* Tick–tock model

 |