HSA Intermediate Layer – HSAIL
Ključnu reč – HSAIL smo spominjali i ranije kao layer u lancu kompilatora (kompajlera). Ovde se radi o virtualnom ISA (Instruction Set Architecture) setu instrukcija koji se izvršava na odgovarajućem hardverskom setu instrukcija putem JIT (Just In Time) kompajlera ili drugačije rečeno „finalajzera“. Dakle, slično kao kod standardne JRE (Java Runtime Enviroment), izvršavanje se vrši preko odgovarajućeg softverskog layer-a koji je pisan za konkretnu mikroarhitekturu, odnosno CPU ili GPU.
Memorijski model je organizovan tako da omogući redosled „transparentnosti“ svih tredova u HSA sistemu. Dizajniran je da radi sa najpopularnijim memorijskim modelima koje koriste C++, Java i .NET.
Transparentnost se kontroliše pomoću metoda kao što su Load.Acquire, Store.Release i Barriers. HSA ne predstavlja alternativu za OpenCL, već OpenCL na HSA arhitekturi ima koristi zbog izbegavanja nepotrebnog kopiranja podataka, kao i od niske latencije raspodele posla. Rezultat ovoga je unapređen memorijski model koji podrazumeva deljenje adresa između CPU-a i GPU-a.
Dodaj komentar