breviar istoric intel (ii)

luni, 30 apr. 2012, 18:28

În cadrul articolului anterior rămăsesem pe undeva la Pentium, care spuneam că are pipeline superscalar, cache-uri de date și de instrucțiuni și așa mai departe. Să facem o pauză și să explicăm câteva din conceptele astea, pentru că sunt foarte importante pentru ceea ce a urmat după.

Pipeline-ul, adică pe românește banda de asamblare, e pe scurt transpunerea în calculatoare a ideii lui Henry Ford: luăm o problemă, o spargem în probleme seriale mai mici și punem entități separate să lucreze la fiecare (sub)problemă. Astfel soluția subproblemei 0 e transmisă către entitatea care se ocupă de subproblema 1, ieșirea lui 1 către 2 și tot așa. Avantajul acestei soluții e că dacă procesorul are două instrucțiuni consecutive de executat, pipeline-ul va putea executa – în cazul ideal – porțiuni din ele (de exemplu preluarea unei variabile din memorie și o adunare) în paralel.

Abordarea asta aduce cu ea și multe complicații în care nu vom intra aici, însă e interesant aspectul că dacă două instrucțiuni (consecutive sau nu) nu depind între ele, acestea pot ajunge să fie executate într-o ordine aleatoare. Drept urmare dacă există două benzi de asamblare distincte, procesorul va putea planifica instrucțiuni după o politică prestabilită. Ca fapt divers execuția out-of-order n-a fost inventată de Intel, ci de o (fostă) companie care avea în componență și un român, dar în fine, astea-s deja detalii. (mai mult…)