# PowerPC
PowerPC, AIM olarak bilinen Apple-IBM-Motorola ittifakının 1991'de geliştirdiği bir RISC mikroişlemcisidir. Genel olarak kişisel bilgisayarlar içindir. PowerPC merkezi işlem birimleri (CPU) gömülü (embedded) ve yüksek performans işlemcileri olduğu için popüler olmuştur. PowerPC 1990'da AIM' in ve PReP'in (PowerPC referans platformu) temel taşı oldu, fakat mimari Apple'ın Macintosh'unun 1994–2006 modellerinde daha başarılı bulundu.
PowerPC fazlasıyla IBM'in önceki POWER mimarisi üzerine dayandırıldı ve bununla yüksek bir uyumluluk sağladı. Mimariler, tasarım aşamasında çalıştırılan aynı program ve işletim sistemlerine bağlı kaldı.


## Tarihçe.
PowerPC'nin tarihi, 1970'lerin sonunda bilgisayar mimarisi ve derleyici tasarımlarına büyük katkısı olan John Cocke'un IBM 801 prototipli yongası ile başlar. 801 tabanlı çekirdekler (cores) IBM'in gömülü ürünlerinde kullanıldı. Sonunda 16 yazmaçlı ROMP işlemcisi haline geldi ve IBRMT 'de kullanıldı. RT, performansta bir hayal kırıklığına yol açtı ve IBM piyasadaki en hızlı işlemciyi yapmak için Amerika Projesi'ni başlattı. Sonuç, 1990 başında RISC System/6000 ile sunulan POWER mimarisi oldu.
POWER mikroişlemcisi, yüksek performans ve çoklu yonga tasarımıydı. IBM tek yongalı mikroişlemciye ihtiyaç olduğunu ve bazı POWER işlemci komutlarının, RS/6000 serisini düşük sonlu makinelerden yüksek sonlu makinelere ölçeklemek için elemek gerektiğini fark etti ve RSC adında tek yongaya sahip POWER mikroişlemcisi üzerinde çalışmaya başladı. 1991 başlarında IBM kendi tasarımlarının endüstride çok tutulan bir mikroişlemci olduğunu fark etti.
İlk POWERPC ürünleri piyasaya ulaştığında büyük bir ilgi gördü. 1990'ların ortalarına kadar, POWERPC işlemcileri x86 merkezi işlem birimlerinin en hızlıları ile çalışan programların test sonuçlarını elde ettiler. Windows, OS/2 ve Sun müşterileri, POWERPC için uygulama yazılımsızlığı ile karşılaştılar. POWERPC versiyonları olan Solaris, OS/2 ve Windows piyasadan kısa bir periyot sonra kaldırıldılar. Sadece Apple POWERPC den kazanç sağladı. Apple'a göre, POWERPC 'nin performansı, Windows 95 ve Windows NT tabanlı PC ler tarafından yapılan artan rekabet yüzünde önemli bir yer tutmaktaydı.
2004'te Motorola, işlemci faaliyetini bağımsız bir kurum olan Freescale Semiconductor kurumuna yöneltti ve yonga üretiminden çıktı. Aynı zamanlarda, IBM Intel işlemci kullanan bilgisayar ürünlerini Çinlilere satarak piyasadan çıktı ve Nintendo Wii, Sony PlayStation 3 ve Microsoft Xbox 360 gibi oyun makinelerinin merkezi işlem birimlerindeki yonga tasarımlarına odaklandı. 2005'te Apple, Macintosh bilgisayarlarında POWERPC işlemcilerini çok uzun kullanmayacağını duyurdu. Bunun yerine daha iyi mikroişlemciler üretti. Kişisel bilgisayar donanımı için yonganın performans sınırları, çıkan sıcaklığa ve ürünlerdeki enerji kullanımına bağlı idi. IBM'in bu hatası 970 işlemcisini 3 GHz değerine taşımıştır. IBM bu kusurundan dolayı Intel ve diğer rakiplerine, hız ve mimari gelişimi alanında yenik düşmüştür. Bu durum AIM birleşimini sona erdirmiştir. IBM POWER PC işlemcilerini oyun konsollarında kullanmaya ve geliştirmeye devam etmiş ve Freescale Semiconductor firması yalnızca gömülü cihazlara odaklanmıştır.
PowerPC işlemcileri geniş alanlı ticaretlerin servis isteklerinde önemli bir yere sahiptir ve günümüzde geliştirilmeye devam edilmektedir. Şimdiki POWER işlemcileri POWERPC mimarisinin komut kümesinin tamamını göstermektedir.
PowerPC tanımlaması şimdi IBM ve Freescale'in üyeleri olan Power.org tarafından ele alınmaktadır. POWERPC, Ceil ve POWER işlemcileri, POWER mimarisi olarak piyasaya sürülmektedir.


## Tasarım özellikleri.
POWERPC RISC ilkeleri (azaltılmış komut kümesi) boyunca tasarlanır ve paralel komut düzeyinde bir merkezi işlem birimi(CPU) gösterimine (superscalar) izin verir. Tasarımın sürümleri 32-bit ve 64- bit gösterimlerde bulunmaktadır. Basit POWER tanımlaması ile başlarsak, POWERPC aşağıdaki gibi toplanabilir:
  - Big endian yöntemi olan en önemli byte değerinin hafızada en düşük adresle tutulması ve little endian yönetimi olan en önemsiz byte değerinin düşük adresle beraber hafızada tutulması yöntemlerinde destek olmaktır. POWER PC çalışma süresinde bir yöntemden diğer yönteme geçebilir. Bu özellik POWER PC G5 de bulunmamaktadır. (Bu Virtual PC'nin G5 tabanlı Macintosh'lara göre daha fazla tutulmasına neden olmuştur.)
  - Kelimeyi sayısal yorumlayan (floating point) bazı komutların kesinliği ve buna ilaveten çift kesinlik formları
  - Apple tarafınca eklenen sayısal yorumlayıcı komutlar 
  - 32 bit modu ile uygun eksiksiz 64-bit tanımlaması 
  - Önemli işletim sistemlerine benzeyen özel POWER komutlarının birçoğunu taşıması


## Endian yöntemleri.
IBM'in bazı gömülü POWERPC yongaları sayfa başına bir byte sırası biti (endianness bit) kullanmaktadır. Sonrakilerin hiçbiri onlara uygun olmamaktadır.
Birçok POWERPC yongası, endianness yolu ile MSR yazmacındaki bir bite, ikinci bir bit yardımı ile OS'ye değişik endianness ile çalışmasına izin vererek dönüşüm yapabilir. Tersine çevrilmiş sayfa tablosuna erişimler çoğunlukla big endian modunda yapılır. İşlemci big endian modunda başlar.
Little endian modunda, etkin adresin önemsiz üç biti, operand uzunluğu tarafından seçilmiş üç bit değeri ile özel veya işlemi(XOR) yapılır. Bu durum normal yazılıma göre little endian olarak görünmeye yeterlidir.
Bir işletim sistemi çevre yongalara (video ve iletişim ağı donanımı) eriştiğinde çevrenin çarpık bir görüntüsünü görebilir. Bu çarpık görüntüyü onarma, işlemciye veri giriş ve çıkışlarında 64-bit byte koşulsuz yer değiştirmesinin ana kart tarafından düzenlenmesini gerektirir. Big endian modundaki ana kartta da, little endian modunda işleyen bir işetim sistemi, little endian yongalara erişirken byte'ları yer değiştirmeli ve özel veya (XOR) işlemini geri almalıdır.
AltiVec işlemleri, 128 bit olmasına rağmen, 64 bit gibi davranmaktadırlar. Bu durum, önceki AltiVec'ler için tasarlanmış olan little-endian ana kartları ile uyumluluk sağlar.
Bu gösterimin bir ilginç yan etkisi, bir programın en uzun operand formatı olan 64-bit değerini bir endian modunda iken hafızada tutabilmesi, dönüşüm yöntemleri ve hiçbir byte sırasını değiştirmeden aynı 64 bit değerini geri okuyabilmesidir. Eğer ana kart aynı anda dönüşüm ediyor ise, bu durum söz konusu değildir.
Mercury bilgisayar sistemleri ve Matrox POWERPC'yi little endian modunda çalıştırdılar. Bu durum x86 tabanlı çoklu bilgisayarlarla PCI kartları üzerinde birleşik işlemciler olarak, veri yapılarının paylaşımını sağlayan POWER PC araçları olmak için yapıldı. PCI ve x86'nın her ikisi de little endian idi. POWERPC için Solaris ve Windows NT işlemciyi little endian modunda çalıştırdılar.


## Uygulamalar.
POWER1 ve POWERPC teknik özelliklerinin bir hibritini gösteren RSC tabanlı MPC601, ilk tekli yonga tasarımı idi. IBM bu yongayı mevcut POWER1 tabanlı platformlarında kullandı. Apple yonga tabanlı Macintosh bilgisayarlar üzerinde çalışmaya devam etti ve sonunda 14 Mart 1994'te 601 tabanlı Power Macintosh olarak bunları piyasaya sürdü.
IBM POWERPC tabanlı yapılmış olan masaüstüleri piyasaya sürmeye hazırdı. Ancak, IBM'in bu bilgisayarlarda çalıştırmak için tasarladığı Microsoft Windows NT işletim sistemi, 1993 başlarında yani makinelerin piyasaya sürülmekte hazır olduklarında, daha tamamlanmamıştı. Bu yüzden IBM husumetini Microsoft'a karşı geliştirdi ve POWER PC için OS/2'yi yeniden yazmaya karar verdi. POWERPC için OS/2'yi baştan yazmak iki yılını aldı. İşletim sistemi bittiğinde, POWERPC 'nin işletim sistemi piyasası yok olmuştu. Bu nedenle, RS/6000 modeli olarak bilinen IBM POWER PC masaüstüleri satılamadı.
POWERPC tabanlı işletim sistemi eksik olan Apple, değişik bir yol izledi. POWERPC mimarisi için Macişletim sisteminin önemli parçalarını yeniden yazdılar ve 68K tabanlı uygulamaları işletebilen 680x0 emülatör ve işletim sisteminin daha önce yazılmamış kısımlarını yazdılar.
İkinci nesil saf olarak adlandırılan düşük sonlu(low end) 603 ve yüksek sonlu (high end) 604 idi. 603 çok düşük fiyat ve güç tüketiminden dolayı tanınmış idi. 603 projesini gelecekteki bütün POWERPC yongaları için basit çekirdekler yapmak için kullanılan, Motorola parçalarına yönelik bir tasarım idi. Apple 603'ü yeni diz üstü tasarımında kullanmayı denedi fakat 8KB Level-1 önbellekten dolayı başaramadı. Mac işletim sistemindeki 68000 emülatörü 8KB'a uymadı ve bu yüzden bilgisayar aşırı derecede yavaşladı. 16KB L1 önbelleğine sahip olan 603e emülatörün daha verimli çalışmasına izin vererek sorunu çözdü.
İlk 64 bit uygulaması 620 idi, fakat fazla kullanılmıyor gibi gözüküyordu. Apple bunu almak istemiyordu çünkü ölü bir alana sahipti ve gömülü piyasa için çok pahalı idi. Daha sonra IBM, POWERPC 970 'in girişi yani 2002 sonuna kadar 64-bit çözümünü kullanmadan kendi POWER3 tasarımını kullandı. 970 POWER4 hizmet birimi (server) işlemcisinden çıkarılan 64-bit bir işlemcidir. Bunu yaratmak için POWER4 çekirdeği 32-bit POWER PC işlemcileri ile geri uyumlu olabilmesi için modifiye edildi ve bir vektör kümesi(Motorola 74xx serisindeki Altivec ilavelerine benzer) eklendi.


## İşletim sistemleri.
Gömülü POWERPC sistemlerinde kullanılan işletim sistemleri, QNX gerçek zamanlı işletim sistemi, LynxOS gerçek zamanlı işletim sistemi, VxWorks, eCos, LynuxWorks tarafından BlueCat gömülü Linux, AmigaOS 4.x ve MorphOS dur. POWERPC üzerinde çalışan Yellow Dog Linux ve POWERPC Linux Linux'un iki çeşididir. FreeBSD, NetBSD ve OpenBSD'lerin tümü POWERPC işlemcileri ile bazı sistemler üzerinde çalışabilirler. Windows NT 3.51 POWERPC işlemcileri için destek sağlamıştır.


## Lisanslar.
POWERPC kullanan lisanslı şirketler: 
  - Altera
  - Apple Computer AIM birleşimi, son günlerde Intel dönüşümlü
  - Applied Micro Circuits Corporation (AMCC) 
  - RAD750 merkezi işlem birimi için BAE Sistemleri. 
  - Yönlendiriciler için Cisco Sistemleri. 
  - V-Dragon merkezi işlem birimi için Culturecom 
  - HCL
  - Xbox 360 işlemcisi için Microsoft . 
  - Motorola (şimdi Freescale Semiconductor), AIM'ın bir parçası
  - GameCube ve Wii işlemcileri için Nintendo 
  - P.A. Semi. 
  - Samsung.
  - Cell işlemcisi için Sony ve Toshiba 
  - Virtex-II and Virtex-4 FPGA'ları için Xilinx