# ARM mimarisi
ARM mimarisi (orijinal adı Acorn RISC Machine) RISC tabanlı bir işlemci mimarisidir. Genel itibarıyla düşük güç tüketimi, diğer RISC tabanlı işlemcilere göre yüksek performanslı oluşu ve x86-x64 işlemcilere göre daha hesaplı olmasından dolayı gömülü sistemlerde, taşınabilir aygıtlarda kullanılan yongasetlerinin dizaynında tercih edilir. 32 ve 64 bit modelleri bulunur.
ARM firması kendi başına işlemci üretmez, ISA dizaynı ve kullanım lisansı satar. Bu sebeple aynı nesil işlemci farklı üreticilerden değiştirilmiş olarak çıkabilir, bağlı olarak da performans farklılıkları görülür. Bu yüzden işlemci nesilleri ve özellikleri incelenirken ARM referans tasarımı ele alınır.


## Tarihçe.
Acorn Computers Ltd tarafından geliştirme projesi olarak ARM dizaynı 1983 yılında başladı.
Roger Wilson and Steve Furber liderliğinde takım, gelişmiş bir MOS Technology 6502'sinin neye benzeyeceğinin geliştirilmesine başladı. Acorn, 6502'sini temel aldığı için programa benzer chip, şirket için önemli bir avantaj sağladı.
Takım, ARM1 isimli geliştirilmiş örneği Nisan 1985'te ve takip eden yılda ilk gerçek ürün olan ARM2'yi tamamladı. ARM2'nin göze çarpan özellikleri, 32-bit veriyolu, 26-bit address space, 64 Mbayt adres alanı ve 16 adet 32-bitlik yazmaç sağlar. Bu yazmaçlardan birtanesi program sayacı olarak kullanılır. Bu sayacın en fazla 6 bit'i ve en az 2 bit'i işlemci durum göstergesi'ni tutar. 30,000 transistör ile yeryüzündeki en basit kullanışlı 32-bit mikroişlemcisi ARM2 işlemcisidir. Bu basitliğin çoğu microkod bulundurmamasından ve günümüzün çoğu işlemcisinde olduğu gibi önbellek içermemesidir. Bu basitlik Intel 80286 işlemcisinden hem daha iyi performans gösterirken hem de daha az güç kullanımı sağlıyordu. ARM3, performansı daha fazla arttırmasını sağlayan 4KB önbellek ile geliştirildi.
ARM6'nın ilk modeli 1991 yılında piyasaya sürüldü ve Apple, kendi Apple Newton PDA'ları için temel olarak ARM6-based ARM 610'nu kullandı. 1994 yılında, Acorn kendi Risc PC bilgisayarlarında ana CPU olarak the ARM6-based ARM 610'nu kullandı.


## Tasarım notları.
Tasarımın açık, basit ve hızlı olabilmesi için Acorn microbilgisayarlarında kullanılan 8-bit 6502 işlemcisine benzer bir şekilde mikrokod barındırmayacak şekilde geliştirildi.
ARM Mimarisi, aşağıda belirtilen RISC özellikleri içerir:
  - Load-store mimarisi
  - Yanlış hafıza erişimlerine karşı desteği yok. (ARMv6 çekirdeklerinde destekleniyor.)
  - Geniş 16 × 32-bit yazmaç dosyası
Intel 80286 ve Motorola 68020 işlemcilerindeki gibi bazı bilindik tasarım özellikleri kullanıldı:
  - Güçlü indeksleme,
  - Basit ama hızlı 2-öncelikli-bölüm kesme altsistemi,
  - Aritmetik yönergelerde ve adres hesaplamalarında performans sorunu olmadan 32-bit barrel shifter
Her yönergenin öncesinde 4-bit "condition code"'u kullanması ARM tasarımına ilginç bir eklemedir.
Hafıza erişim talimatlarında yerini almalar olduğu için bu kesmeler, önemli şekilde geçerli bitlerin kodlanmasını ..., fakat öbür taraftan da küçük if koşulları için kodlar oluşturulurken dallanma talimatlarından kaçınılır. Euclid'in Euclidean algorithm örneği en bilinen ve standart örnektir:
C programlama dilinde, döngü:
 int gcd (int i, int j) 
 while (i != j)
 if (i > j) 
 i -= j;
 else 
 j -= i;
 return i;
 
ARM assembly dilinde, döngü:
 loop CMP Ri, Rj; set condition "NE" if (i != j)
 ; "GT" if (i > j), 
 ; or "LT" if (i < j) 
 SUBGT Ri, Ri, Rj; if "GT", i = i-j; 
 SUBLT Rj, Rj, Ri; if "LT", j = j-i; 
 BNE loop; if "NE", then loop
then ve else yantümcelerinde dallanmalardan kaçınılır.
Komut kümelerinin başka tek özelliği de kaydırma ve döndürmeleri "veri işlemleri" (aritmetik, mantıksal ve yazmaç-yazmaç hareketi) komutlarına bağlayabilmesidir. Örneğin C dilinde
a += (j « 2); 
Arm işlemcisinde tek çevrim komutu ve tek bir kelimeymiş gibi dönüştürülür.
 ADD Ra, Ra, Rj, LSL #2 
Tipik Arm programında bu sonuç beklenenden daha az hafıza erişimi ve boru hattının daha verimli kullanılmasını sağlar. ARM işlemcisinin yavaş hızla çalıştığı düşünülmesine karşın daha gelişmiş işlemciler ile yine de yarışabilir durumdadır.


## ARM lisansları.
ARM lisanslarını elinde tutan bazı firmalar: Analog Devices, Atmel, Broadcom, Cirrus Logic, Faraday technology, IBM, Infineon Technologies, Nintendo, NXP Semiconductors (spun off from Philips in 2006), OKI, Samsung, Sharp, STMicroelectronics, Texas Instruments ve VLSI


### Yaklaşık lisans bedeli.
2.45 milyar ünitenin lisanslama sonucu, ARM'nin yıllık raporuna göre lisans bedeli toplam 164.1 milyon Amerikan Doları'dır. Bu yaklaşık ünite başına 0.067 Amerikan dolarına denk gelir. Tüm çekirdeklerin ortalaması olmasına karşın pahalı ve ucuz eski çekirdekleri de buna dâhildir.