Ugrás a főmenüre.
Minden más 2008.07.15.

Low-level Apple huncutság, LLVM-GCC, Snow Leopard

Az Xcode az Apple fejlesztői környezete/csomagja, ezzel lehet natív OSX és iPhone alkalmazásokat készíteni többek között. Az új 3.1-es verzió két új fordítót fog tartalmazni, az egyik a GCC 4.2, a másik pedig az LLVM-GCC (egy korai változata). A Snow Leopard alapvető építőkockájáról van szó, ittenvan a "titok" emberek! Meg emiatt nem lesz támogatott a PowerPC már.
Low-level Apple huncutság, LLVM-GCC, Snow Leopard

Mi is az a GCC?

GNU C Compiler, ő fordítja le a forráskódot futtatható alkalmazássá. A GCC 4.2 sokkal jobb a jelenlegi 4-es változatnál, például sok fejlesztő örömködött azon, hogy az FFMPEG-et már MMX támogatással is le tudják fordítani, ami rögtön 30-80%-os sebességnövekedést hoz. Hoppá, de régebben kellett volna, Intelre nem ma álltunk át.

A GCC nagy vonalakban ezeket csinálja:

  1. Elemzi a forráskódot és lefordítja egy átmeneti formára. Itt derülnek ki többek között a szintakszishibák, elgépelések.
  2. Optimalizál, megpróbálja eltüntetni a redundanciákat, sosem lefutó kódrészleteket, hasonlók.
  3. Lefordítja az egészet assembly nyelvre.
  4. Az assembler pedig továbbfordít objektumkódra, amit már képes lenne futtatni a géped, de nincsenek mellette a hivatkozott külső objektumok és funkciók.
  5. Összekombinálja a külső dolgokat az objektumkóddal és elkészíti a futtatható állományt (linker).

LLVM?

A GCC alapvető működési elve és mechanizmusa stabil, bevált, de régi: a GCC-t a 80-as években kezdték fejleszteni. Az LLVM csak néhány éves (1.0 2003-ban) és néhány fenti munkafolyamatot máshogy, jobban igyekszik végrehajtani. Arra is képes, hogy eltérő nyelven készült forráskód-részleteket optimalizáljon össze.

Másik probléma, hogy a GCC GPL licenszes, így nem tudja az Appel közvetlenül beleintegrálni az Xcode-ba, mert ők másfajta open konstrukciót alkalmaznak (valami BSD/MIT féle). Nem érdekes.

Az Apple korán lecsapott a lehetőségre felismerve a hosszútávú potenciált. Már 2005-ben részt vállaltak az LLVM-ben, a projekt vezetőjét (Chris Lattner) pedig később felvették a céghez.

LLVM-GCC

Nem hagyták el teljesen a GCC-t, mert azért vannak igen jó részek benne, inkább elindították az LLVM-GCC-t, amivel létrehoztak egy hibrid megoldást.

Az LLVM-GCC állítólag 33%-kal gyorsabb szoftvert köp ki a GCC-hez képest, de ezt kezeljük fenntartásokkal. Nem így fogja a felhasználó érzékelni, nem ennyit fog érzékelni, hiszen egy szoftver "sebességérzete" sok más dologtól is függ, pl. mennyi időn belül válaszol egy GUI elemre kattintáskor.

Mindenesetre figyelemreméltó, hogy az Apple vissza mer nyúlni a régi, jól bevált és jónak hitt dolgokhoz, mert a fentiek szerint ott is van mit optimalizálni.

Egyébként az LLVM moduláris jellege miatt könnyebbé teszi a különböző CPU architektúrákra történő fordítást, pl. könnyebbé tette az iPhone ARM processzoránál is. Attól persze most tekintsünk el, hogy az iPhone SDK olyan bugos, mint az állat.

humorous pictures

Snow Leopard

Az LLVM-GCC a kulcsa ennek az újdonságnak, az Apple következő operációs rendszerének. A Snow Leopard elsősorban a párhuzamos feladatvégrehajtásról és egy új architektúráról szól, valószínűleg kevesebb látványos fejlesztést kapunk majd GUI oldalon.

A processzorokat már nem gigahertzekben fejlesztik, a könnyű út lelassult: mostanában inkább csak párhuzamosítással lehet nagyobb teljesítményeket elérni, ami azt eredményezi, hogy egyre több processzormaggal fogunk találkozni a gépünkben.

Igenám, de ehhez olyan szoftvereket kell írni, amik ezt ki is használják. Tehát hiába van több mag a gépben, nem lesz gyorsabb a gép, csak ha ügyes volt a fejlesztő.

Az Apple viszont (szerintem nagyon helyesen) nem hagyja, hogy kikerüljön a gyeplő a kezéből, hiszen a szoftverek gyorsasága alapvető minőségi tényező, meghatározó a felhasználói élményben. Az LLVM-be fejlesztett okosságok segítségével próbálnak segíteni a fejlesztőknek, mert bizony sokan vagyunk lusták párhuzamos magokra fejleszteni, illetve nagyon nehéz dolog is ez (Hány mag van? Hogyan osszam processzekre a dolgot?).

Természetesen most is van a processzormagok jó kihasználását segítő izé az OSX-ben, de mivel szegénykémnek nincs elég információja a szoftverek belső felépítéséről, nem túl hatékony. Majd az LLVM-mel lesz.

Összefoglalva tehát az LLVM-GCC a kulcs a jövő Apple operációs rendszerei felé, mert ezzel lehet egy sokkal magasabb szintre emelni a párhuzamos végrehajtásban és így a jövő hardvereiben rejlő lehetőségek kihasználását. Kíváncsi leszek a Microsoft megoldására, gyanítom a Windows 7-tel és a benne lévő sok kicsi végrehajtó kernel-lel valami hasonlóra készülnek.

Ez a fő ok a PowerPC, azaz a régi Apple gépek támogatásának hiányára. Nagyon más architektúra, ami pedig most készül, az meghatározó lesz a következő 5-8 évre. A régihez illeszteni túl sok energia lenne, túl sok részhez kellene más kódot írni, nem éri meg.

0 hozzászólás - Te lehetsz az első!

Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.

Legutolsó hozzászólások

Veoh.com: szánalmas!: zola2000: Megtaláltam a legegyszerűbb megoldást veohra: használjatok operát, és kapcsoljátok be az opera turbot, ekkor az opera norvégiai jön be a...

Végre IKEA!: Ági: Heló bárkinek, aki idetéved! A weboldalunk domain-je - a kedvenc áruházunk ügyvédjének nyumására :) - megváltozott: Az új cím: is...

DJ PLAYER Blue Edition: Gábor: Ja, és természetesen megy iPad-en is, hiszen _minden_ iOS app megy iPad-en.

DJ PLAYER Blue Edition: Gábor: Bug report-okat itt fogadunk: http://djplayer.net/page/bug_report_fixes

DJ PLAYER Blue Edition: hohand: Hello!A dj player mukodik iPad-on is?Tegnap feltettem, wifi-n athuztam ra zeneket,de amikor ranyomtam egy zeneszamra,error-t dobott es valami is!...

iMect means internet, media and other cool things. We're a small company located in Hungary. There is a big footer on every page where you can discover what we do and what happens with us.

Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis magyar cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.