Nașterea sistemului sovietic de apărare antirachetă. „El Burroughs”
Burtsev a moștenit dragostea și respectul față de prototipurile occidentale de la profesorul său, da, în principiu, pornind de la BESM-6, ITMiVT a făcut schimb de informații activ cu Occidentul, în principal cu IBM din SUA și Universitatea din Manchester din Anglia (aceasta prietenie a fost cea care l-a forțat pe Lebedev, inclusiv h. să facă lobby pentru interesele ICL britanic, și nu Robotronul german la acea întâlnire memorabilă din 1969).
Desigur, „Elbrus” nu ar fi putut avea un prototip, iar Burtsev însuși recunoaște acest lucru deschis.
La acel moment, s-a pus problema ridicării nivelului limbajului mașină pentru a reduce decalajul dintre limbajul de nivel înalt și limbajul de comandă pentru a crește eficiența trecerii programelor scrise într-un limbaj de nivel înalt.
În această direcție în lume a lucrat în trei locuri.
În termeni teoretici, munca lui Ailif a fost cea mai puternică: „Principii pentru construirea unei mașini de bază”, la Universitatea din Manchester, în laboratorul lui Kilburn și Edwards, a fost creată mașina MU-5 („Manchester University-5”), iar la Burrows au fost dezvoltate mașini pentru aplicații bancare și militare.
Am fost la toate cele trei companii, am discutat cu principalii dezvoltatori și am avut materialele necesare pe principiile concretizate în aceste dezvoltări.
Când am proiectat MVK-urile Elbrus-1 și Elbrus-2, am luat din dezvoltări avansate tot ceea ce ni s-a părut că merită. Așa sunt fabricate și ar trebui dezvoltate toate mașinile noi.
Dezvoltarea Elbrus-1 și Elbrus-2 MVK a fost influențată de arhitectura HP, 5E26, BESM-6 și de o serie de alte dezvoltări ale acelei vremuri.
Așadar, Burtsev, spre deosebire de mulți, recunoaște că nu a ezitat să împrumute cu generozitate ideile arhitecturale de la vecini și chiar spune unde să caute cozi.
Să profităm de oferta generoasă și să descoperim trei surse și trei componente ale Elbrus.
Prima este monografia lui John Iliffe Basic Machine Principles (Macdonald & Co; prima ediție, 1 ianuarie 1) și articolul său Elements of BLM (The Computer Journal, volumul 1968, numărul 12, august 3, paginile 1969-251), al doilea. este un computer MU258 practic necunoscut, construit ca experiment la Universitatea din Manchester, iar al treilea este o serie Burroughs 5.
Nu este o clonă a lui Burroughs însuși?
Să începem să înțelegem în ordine.
În primul rând, unii dintre cititori poate că au auzit termenul „arhitectură von Neumann” folosit adesea în contextul lăudării: „aici am proiectat un computer unic non-von Neumann”. Desigur, nu este nimic unic în asta, fie doar pentru că mașinile cu arhitectură von Neumann nu mai erau construite în anii 1950.
După ce am lucrat la ENIAC (care a fost programat sub formă de file, cu o mulțime de fire curgând și nu se punea problema vreunui control al calculelor de către un program încărcat în memorie și nu se punea nicio întrebare) pentru următoarea mașină , numit EDSAC, Mauchly și Eckert au venit cu ideile principale pentru designul său.
Sunt următoarele: o memorie omogenă care stochează comenzi, adrese și date, diferă între ele doar prin modul în care sunt accesate și ce efect provoacă; memoria este împărțită în celule adresabile, pentru accesare este necesar să se calculeze adresa binară; și în sfârșit, principiul controlului programului - funcționarea mașinii, este o succesiune de operații pentru încărcarea conținutului celulelor din memorie, manipularea acestora și descărcarea lor înapoi în memorie, sub controlul comenzilor care sunt încărcate secvenţial din aceeași. memorie.
Aproape toate mașinile (și au fost doar câteva zeci) produse în lume între 1945 și 1955 au respectat aceste principii, deoarece au fost construite de oameni de știință academicieni care erau foarte familiarizați cu Prima schiță a unui raport privind EDVAC, trimisă universităților de către curatorul von Neumann de Herman Heine Goldstine în numele său.
Desigur, acest lucru nu putea dura mult timp, deoarece mașina von Neumann pură era mai degrabă o abstractizare matematică, ca o mașină Turing. A fost util să-l folosești în scopuri științifice, dar computerele reale construite în conformitate cu aceste idei s-au dovedit a fi prea lente.
Era mașinilor pure von Neumann sa încheiat încă din 1955-1956, când oamenii au început să se gândească la conducte, execuții speculative, arhitectură bazată pe date și alte asemenea trucuri.
În anul morții lui von Neumann, calculatorul MANIAC II (Mathematical Analyzer Numerical Integrator și Automatic Computer Model II) a fost lansat la Laboratorul Științific Los Alamos cu 5 de lămpi, 190 de diode și 3 de tranzistori.
A rulat pe date pe 48 de biți și instrucțiuni pe 24 de biți, avea 4 de cuvinte RAM și avea o viteză medie de 096 KIPS.
Mașina a fost proiectată de Martin H. Graham, care a propus o idee fundamental nouă - de a marca datele în memorie cu etichete adecvate pentru o mai mare fiabilitate și ușurință în programare.
În anul următor, Graham a fost invitat de personalul Universității Rice din Houston, Texas, pentru a-i ajuta să construiască un computer la fel de puternic precum Los Alamos. Proiectul R1 Rice Institute Computer a durat trei ani, iar în 1961 mașina era gata (mai târziu a fost înlocuită cu standardul IBM 7040 pentru universitățile americane serioase și, în mod ironic, Burroughs B5500).
Schema de decodare a 2 instrucțiuni pe cuvânt, ca în MANIAC II, i s-a părut lui Graham prea elegantă, așa că R1 a funcționat pe cuvinte pe 54 de biți cu instrucțiuni cu lățime fixă pentru întregul cuvânt și a avut o arhitectură de etichetă similară. Lungimea reală a cuvântului a fost de 63 de biți, dintre care 7 au fost codul de corectare a erorilor și 2 au fost eticheta.
Mecanismul de adresare indirectă al lui R1 era mult mai avansat decât cel al lui IBM 709 - de fapt, erau descriptori aproape gata făcut de la viitoarele mașini Burroughs. Graham a fost, de asemenea, un inginer electric talentat și a inventat un nou tip de celulă lampă-diodă pentru R1, numită Single Sided Gate, care a făcut posibilă atingerea unei frecvențe excelente de 1 MHz pentru acei ani. Aparatul avea adrese de 15 biți, 8 registre de date/comandă și 8 registre de adrese.
Universitatea Rice din SUA este ceva asemănător MINEP sovietic, așa că nu este surprinzător că crearea unui computer (care urma să fie folosit pentru a studia hidrodinamica petrolului) a fost finanțată parțial de Shell Oil Company.
Curatorul ei a fost Bob Barton (Robert Stanley Barton), un talentat inginer electronic. În 1958 a urmat un curs de logică matematică și notație poloneză aplicată algebrei și a plecat să lucreze pentru Burroughs, în 1961 construind legendarul B5000 bazat pe arhitectura stivă de etichete.
Același britanic Ilif a lucrat la software-ul R1. Echipa sa a creat sistemul de operare SPIREL, asamblatorul simbolic AP1 și limbajul GENIE, care a devenit unul dintre precursorii OOP. Sistemul de operare avea un mecanism de alocare dinamică a memoriei incredibil de avansat și un colector de gunoi, precum și mecanisme de protecție a datelor și a codului.
Pentru sistemul său de operare, Ailif a dezvoltat un nou mecanism de adresare a matricei folosind un vector de pointeri către vectori de date. Această idee a fost atât de avansată față de adresarea în stilul Fortran (adresa conține un pas și un offset pentru fiecare element al matricei) încât a fost numită după creator, iar de atunci vectorii Ailif au fost folosiți peste tot, de la Ferranti Atlas la Java, Python, Ruby, Visual Basic .NET, Perl, PHP, JavaScript, Objective-C și Swift.
La sfârșitul anilor 1950, modelul teoretic al mașinii lui von Neumann s-a confruntat cu o provocare la care nu a avut un răspuns adecvat (și, prin urmare, a murit complet).
Calculatoarele au devenit suficient de rapide încât o singură persoană nu le putea încărca cu lucru - a apărut conceptul unui mainframe clasic cu acces la terminal și un sistem de operare multitasking.
Nu ne vom aprofunda în complexitățile care îi așteaptă pe arhitecți pe drumul către multitasking (orice manual sensibil despre proiectarea sistemelor de operare va face pentru asta), observăm doar că reintrarea codului este critică pentru implementarea sa, adică capacitatea de a rula mai multe instanțe. a aceluiași program în același timp, lucrând peste date diferite, astfel încât datele unui utilizator să fie protejate de modificările unui alt utilizator.
Lăsând toate aceste probleme în întregime pe capul arhitectului OS și al programatorilor de sistem nu părea o idee foarte bună - complexitatea dezvoltării software ar fi crescut prea mult (amintiți-vă cum proiectul OS / 360 s-a încheiat cu un eșec fabulos, Multics, de asemenea, nu a făcut-o. decolare).
A existat și o cale alternativă de ieșire - crearea unei arhitecturi potrivite pentru computerul în sine.
Aceste posibilități au fost luate în considerare aproape simultan de către colegii din R1 - practicantul Barton, care a proiectat B5000, și teoreticianul Ailif, care a scris principiile de bază ale mașinii care l-au inspirat atât de mult pe Burtsev.
ICL (cu care nu am făcut echipă niciodată) a condus dezvoltarea arhitecturilor avansate din 1963 până în 1968 (pe baza lucrării a fost scris articolul), Ilif a construit un prototip BLM pentru ei cu metode de gestionare a memoriei hardware și mai avansate decât la mașinile Burroughs .
Ideea principală a lui Ailif a fost o încercare de a evita standardul pentru alte sisteme (și în acei ani lent și ineficient) mecanism de partajare a memoriei bazat exclusiv pe metode software - comutare de context (un termen al arhitecturii OS, adică, într-un mod simplu, descărcare temporară). și salvarea unui proces care rulează și încărcarea și începerea execuției altuia) de către sistemul de operare însuși. Din punctul său de vedere, abordarea hardware folosind descriptori a fost mult mai eficientă.
Proiectul BLM a fost închis în 1969, dar dezvoltările sale au fost parțial utilizate în linia avansată a mainframe-urilor din seria ICL 2900 lansată în 1974 (pe care le-am fi putut dezvolta împreună, dar, din păcate).
În mod firesc, problema protecției efective a memoriei (și, prin urmare, a partajării timpului) a fost o preocupare în anii 1960 pentru aproape toți oamenii de știință în domeniul informaticii și corporațiile.
Universitatea din Manchester nu a stat deoparte și și-a construit al cincilea computer, numit MU5.
Mașina a fost dezvoltată în colaborare cu același ICL din 1966, computerul trebuia să fie de 20 de ori mai rapid decât Ferranti Atlas în performanță. Dezvoltarea a continuat din 1969 până în 1974.
MU5 era controlat de sistemul de operare MUSS și includea trei procesoare - MU5 în sine, ICL 1905E și PDP-11. Toate cele mai avansate elemente erau disponibile: arhitectura tag-descriptor, memoria asociativă, preîncărcarea instrucțiunilor, în general - a fost vârful tehnologiei acelor ani.
MU5 a servit drept bază pentru seria ICL 2900 și a lucrat la universitate până în 1982.
Ultimul computer din Manchester a fost MU6, care consta din trei mașini: MU66P, o implementare avansată de microprocesor folosită ca PC; MU66G este un supercalculator științific scalar puternic, iar MU66V este un sistem vector-paralel.
Oamenii de știință nu au stăpânit dezvoltarea arhitecturii microprocesorului, MU66G a fost creat și a lucrat la departament din 1982 până în 1987, iar pentru MU66V a fost construit un prototip pe Motorola 68k cu emulare a operațiunilor vectoriale.
Progresul suplimentar al mașinilor descriptori urma să fie așa-numita schemă. adresarea bazată pe capacități (literal, „adresarea bazată pe capacități”, nu are o traducere bine stabilită în rusă, deoarece școala națională nu era familiarizată cu astfel de mașini, în traducerea cărții „Arhitectura computerelor moderne: în 2 cărți” (Myers G. J., 1985) este foarte potrivit numită adresare potențială).
Sensul potențialei adrese este că pointerii sunt înlocuiți cu obiecte speciale protejate care pot fi create numai cu ajutorul instrucțiunilor privilegiate executate doar printr-un proces privilegiat special al nucleului OS. Acest lucru permite nucleului să controleze ce procese pot accesa ce obiecte din memorie fără a fi nevoie să folosească deloc spații de adrese separate și, prin urmare, fără suprasolicitarea unui comutator de context.
Ca efect indirect, o astfel de schemă duce la un model de memorie omogen sau plat - de acum înainte (din punctul de vedere chiar și al unui programator de driver de nivel scăzut!) Nu există nicio diferență de interfață între un obiect din RAM sau de pe disc, accesul este absolut uniform, prin apelarea unui obiect protejat. Lista de obiecte poate fi stocată într-un segment de memorie special (ca, de exemplu, în Plessey System 250, creat în 1969-1972 și reprezentând întruchiparea în hardware a unui model de calcul foarte ezoteric numit λ-calcul) sau codificată cu un bit special, ca în prototipul IBM System /38.
Sistemul Plessey 250 a fost dezvoltat pentru armată și, ca mașină centrală a Departamentului de Apărare, rețeaua de comunicații a fost folosită cu succes în timpul Războiului din Golf.
Acest computer a fost vârful absolut al securității rețelei, o mașină în care nu existau superutilizatori cu privilegii nelimitate ca clasă și nicio modalitate de a-și ridica privilegiile prin hacking pentru a face ceea ce nu ar trebui făcut.
O astfel de arhitectură a fost considerată incredibil de progresivă și avansată în anii 1970-1980 și a fost dezvoltată de multe firme și grupuri de cercetare, calculatoarele CAP (Cambridge, 1970-1977), Flex Computer System (Royal Signals and Radar Establishment, 1970), Three Rivers PERQ (Universitatea Carnegie Mellon și ICL, 1980-1985) și cel mai faimos microprocesorul Intel iAPX 432 eșuat (1981).
E amuzant că inițiatorii a 90% din toate cele mai originale și ciudate soluții arhitecturale din anii 1960-1970 au fost britanicii (în anii 1980 - japonezii, cu un rezultat similar), și nu americanii.
Oamenii de știință britanici (da, chiar aceia!) au făcut tot posibilul să rămână pe creasta valului și să-și confirme calificările de teoreticieni remarcabili în informatică. Singura păcat este că, ca și în cazul dezvoltării academice sovietice a computerelor, toate aceste proiecte au fost fenomenale doar pe hârtie.
ICL a încercat cu disperare să intre în topul producătorilor mondiali de fier avansat, dar, din păcate, nu a ieșit.
Americanii au crezut la început că colegii anglo-saxoni, având în vedere contribuția lor de pionierat la IT încă de pe vremea lui Turing, nu vor da sfaturi proaste și au fost arse de două ori - iar Intel iAPX 432 și IBM System / 38 au eșuat lamentabil, ceea ce a provocat o mare întoarcere a mijlocului anilor 1980 către arhitecturile moderne de procesoare (tocmai atunci școala americană de inginerie informatică a descoperit principiul mașinilor RISC, care s-a dovedit a fi atât de reușit din toate părțile încât 99% dintre calculatoarele moderne sunt cumva construite după aceste modele).
Uneori este chiar interesant - ce evoluții ar fi avut loc o școală sovietică-britanica cu drepturi depline până în anii 1980 cu cultura lor avansată de producție, ideile noastre nebunești comune și capacitatea URSS de a injecta miliarde de petrodolari în dezvoltare?
Este regretabil că aceste oportunități s-au închis pentru totdeauna.
Desigur, informațiile despre toate evoluțiile avansate ale britanicilor au venit la Burtsev literal de la prima mână și zi de zi, având în vedere că ITMiVT a avut contacte excelente cu Universitatea din Manchester (de la începutul anilor 1960 și lucrează la BESM-6) și cu fermă ICL, cu care Lebedev și-a dorit atât de mult să facă o alianță. Cu toate acestea, Burroughs a fost singura implementare comercială a mașinilor descriptore de etichete.
Ce se poate spune despre munca lui Burtsev cu această mașină?
Incredibilele aventuri ale lui Burroughs în Rusia
Calculul sovietic era o zonă extrem de închisă, pentru multe mașini nu există fotografii, descrieri sensibile (despre arhitectura Kitovskaya M-100, de exemplu, nimic nu se știe cu adevărat până acum) și, în general, așteaptă surprize la fiecare pas (cum ar fi descoperirea în anii 2010 Computer „Volga”, a cărui existență nici măcar nu a fost bănuită de Revich, Malinovsky și Malashevich, care au luat zeci de interviuri și au scris cărți pe baza acestora).
Dar într-o zonă anume existau mai multe tăceri și secrete decât chiar și în vehiculele militare. Acestea sunt referiri la calculatoare americane care au lucrat în Uniune.
Acest subiect a fost atât de displacut să fie abordat, încât s-ar putea avea impresia că, în afară de binecunoscutul CDC 6500 din Dubna, nu existau deloc computere americane în URSS ca clasă.
Chiar și informațiile despre CYBER 170 și 172 trebuiau extrase puțin câte puțin (și erau HP 3000 care erau în Academia de Științe a URSS și o grămadă de altele!), dar prezența unui Burroughs adevărat în Uniune a fost luată în considerare de către multe să fie un mit.
Nici o singură sursă, interviu, forum, carte în limba rusă nu conține măcar o linie dedicată destinului acestor mașini în URSS. Cu toate acestea, ca întotdeauna, prietenii noștri occidentali știu mult mai multe despre noi decât noi înșine.
În urma unor căutări atente, s-a stabilit că Burroughs era foarte iubit în Blocul Social și folosit cu putere, deși sursele menajere de aici aveau apă în gură.
Din fericire, există destui fani ai acestei arhitecturi în SUA care știu totul despre ea, inclusiv numărul complet de instalări ale fiecărui model de mainframe, până la numerele de serie. Ei au rezumat aceste informații într-un tabel, pe care l-au împărtășit cu generozitate, iar documentul include și sursele de informații pentru fiecare transport de computere Burroughs către țările Pactului de la Varșovia.
Deci, să ne întoarcem la cartea Economic Statecraft during the Cold War: Eurpoean Responses to the US Trade embargo, care ne dezvăluie secretele achizițiilor sovietice.
Oh, cum, până în 1969, Burroughs B5500 nu a fost instalat doar la Moscova, dar și specialiști sovietici au reușit să facă un stagiu la fabrica companiei din Detroit!
Alte 4 mașini au fost vândute Cehoslovaciei la ordin guvernamental, din păcate, nu se știe unde au fost instalate și ce au făcut, dar evident că nu la universități, coloana „utilizator” din tabel indică „guvern”. Cel mai puternic B6700 (upgradat ulterior la B7700!) A fost vândut în RDG și folosit la Universitatea din Karlsruhe.
Încercările ulterioare de a clarifica informațiile despre livrările către Moscova ne-au forțat să luăm legătura cu Muzeul de Inginerie, Comunicații și Calcul de Sud-Vest (Arizona, SUA).
Pe site-ul lor, puteți găsi o notă de subsol la un articol din 1982 al lui Alistair Mayer de la ACM's Computer Architecture News (Alastair JW Mayer, The Architecture of the Burroughs B5000 – 20 Years Later and Still Ahead of the Times), o scrisoare a inginerului Rea Williams ) de la echipa de instalare și asistență Burroughs Corporation:
Apropo, în onoarea unui astfel de eveniment, sovieticii au emis insigne comemorative cu emblema Burroughs și inscripția „Barrows” și le-au distribuit participanților la proiect. Insigna originală a lui Williams împodobește titlul acestui articol.
Deci, industria petrolieră sovietică (în general paralelă cu toată fărădelegea care se petrecea în jurul computerelor noastre militare și științifice), fiind extrem de influentă, bogată și infinit de departe de toate confruntările Academiei și ale partidului, nedorind să se mulțumească cu calculatoarele domestice (și absolut nedorind ceva acolo, să comande de la cineva de la institutele de cercetare sovietice și să aștepte până când după zece ani de confruntări eșuează), l-au luat cu calm și și-a cumpărat tot ce a putut - un excelent B6700. Au chemat chiar și o echipă de instalare din cadrul corporației pentru a face ca prețioasa mașină să funcționeze corect.
Nu este de mirare că acest episod, care arată clar cât de serioși au tratat mașinile domestice (să nu uităm că petroliștii au adus țării cei mai mulți bani, pe care militarii și academicienii i-au cheltuit apoi pe jocurile lor) au tratat mașinile domestice, au încercat să uite. mai puternic.
Observăm două fapte interesante.
În primul rând, în ciuda faptului că toată lumea îl cunoaște pe Burroughs în principal pentru furnizarea mainframe-urilor lor (ca standard de aur al arhitecturii securizate) pentru Rezerva Federală a SUA, ei au avut și ordine militare (deși mult mai puțin decât IBM și Sperry, care în timpul celei de-a doua lumi. Război nu au reușit să stabilească contacte cu guvernul).
Și în plus, mașinile lor erau foarte, foarte pasionate de universități. Puteți chiar spune - l-au adorat în toată lumea: în Marea Britanie, Franța, Germania, Japonia, Canada, Australia, Finlanda și chiar Noua Zeelandă, au fost instalate peste o sută de mainframe Burroughs de diferite linii. Din punct de vedere arhitectural (și din punct de vedere al stilului), Burroughs a fost mărul marelui computer.
Mașinile lor erau robuste și incredibil de fiabile, scumpe, puternice, veneau ca un kit absolut cu toate pachetele software și software preinstalate și configurate, arhitectura era închisă, diferită de orice pe piață.
Au fost iubiți de intelectuali de orice tip, deoarece Burroughs (la fel ca Macintosh-ul epocii de aur) doar plug and play. După standardele mainframe-urilor din acei ani, chiar și la fel de reușit ca S/360, a fost incredibil de cool.
Și, desigur, diferă prin design, terminale convenabile de marcă, sistem original de încărcare a discurilor și multe alte lucruri. De asemenea, observăm că în anii săi a fost, deși nu un supercomputer, ci o mașină de lucru puternică care producea aproximativ 2 MFLOPS - de câteva ori mai puternic decât orice avea URSS în acel moment.
În general, universitățile i-au iubit pe măsură, așa că folosirea lui Burroughs ca supercomputer științific în Uniune ar fi o decizie complet justificată. Un bonus separat a fost suportul hardware pentru Algol, un limbaj care a fost considerat, în primul rând, standardul de aur al învățământului superior (mai ales în Europa), și în al doilea rând, extrem de lent pe orice alte arhitecturi.
Algol (al cărui suport deplin nu a apărut în mașinile pur domestice) a fost considerat pe merit standardul programării structurate academice clasice. Nu supraîncărcat cu construcții ezoterice precum PL/I, nu la fel de anarhic ca Pure C, de multe ori mai convenabil decât Fortran, mult mai puțin atrăgător decât LISP și (Doamne ferește) Prolog.
Înainte de apariția conceptului de OOP, nu a fost creat nimic mai perfect și mai convenabil, iar Burroughs au fost singurele mașini pe care nu a încetinit.
Un alt fapt merită o atenție deosebită.
KoCom nu ne-a permis categoric să achiziționăm arhitecturi avansate, chiar și restricțiile privind stațiile de lucru puternice din anii 1980 au fost ridicate abia după prăbușirea URSS, a trebuit să luptăm cu înverșunare pentru CDC, CYBER a fost vândut cu un scârțâit (cum am menționat deja, directorul Control Data era deja investigat de Congres cu privire la activitățile anti-americane) și au fost instalate mai multe mașini cu scopuri în interesul Statelor Unite.
CYBER de la Centrul Hidrometeorologic ne-a fost dat pentru ajutor cu date despre clima arctică, iar CYBER LIAN a fost dat în schimbul unei promisiuni de a dezvolta în comun calculatoare recursive.
Drept urmare, apropo, au fost vândute în zadar, munca în comun nu a funcționat.
Adevăratul autor al ideii, Torgashov, a fost împins rapid în iad de șefii săi, de îndată ce faima și banii din munca cu yankei au apărut la orizont. Au sosit americanii, au încercat să obțină câteva gesturi în dezvoltare de la șefi, care au avut dificultăți să-și imagineze cum funcționează mașinile obișnuite, în cele din urmă au scuipat peste tot și au plecat.
Așa că URSS a pierdut o altă oportunitate de a intra pe piața mondială.
Dar Burroughs proaspete ne sunt livrate fără să clipim din ochi, nici CoCom, nici Congresul nu se opun, nicio plângere. Acest lucru poate fi justificat, din nou, doar de interesele marilor afaceri.
L-au vândut muncitorilor din petrol cu garanția că evident că nu vor renunța la farmecul lor în fața armatei, ei înșiși au nevoie de el, dar este foarte benefic pentru ambele părți să fie prieteni cu industria petrolieră sovietică.
De asemenea, observăm că au început să ne vândă Burroughs tocmai în anii Brejnev, când intensitatea Războiului Rece a scăzut semnificativ, așa cum am scris în articolele anterioare. În același timp, viclenii yankei nu se grăbeau să-și pompeze adversarii cu tehnologii pur militare (cum ar fi cel mai puternic CDC 6600 sau Cray-1), dar nu le deranja să susțină afacerile sovietice.
Teza de doctorat în administrarea afacerilor a lui Peter Wolcott de la Universitatea din Arizona Tehnologia avansată sovietică: cazul calculului de înaltă performanță, publicată în 1993, afirmă însă că B6700 a fost instalat la Moscova în 1977 (adică toate aprobările și livrarea a durat în total 4 ani!).
Majoritatea lucrărilor de proiectare preliminară la Elbrus au fost finalizate din 1970 până în 1973, când Burtsev a putut vedea o mașină vie doar în SUA (din păcate, nu există informații despre când a mers exact acolo).
În acest moment, inginerii ITMiVT aveau acces doar la documentația generală de pe B6700 - arhitectura de instrucțiuni și diagramele bloc ale mașinii. Wolcott scrie că au primit informații mai detaliate în 1975-1976 (se pare, după călătoria lui Burtsev, care a adus o grămadă de lucrări), ceea ce a dus la unele îmbunătățiri și schimbări în structura lui Elbrus.
În cele din urmă, în 1977, dezvoltatorii au studiat în detaliu Moscow Burroughs, ceea ce a dus la un alt val de upgrade, probabil cu aceasta, inclusiv procesul continuu de a face modificări documentelor care intrau deja în producție.
Din această cauză, putem garanta că inspirația l-a vizitat pe Burtsev, evident sub influența, în primul rând, a lucrărilor britanicilor, cu care s-a putut familiariza la mijlocul anilor ’1960. Și da, în acele vremuri, direcția mașinilor de etichetare-descriptor era într-adevăr considerată „în termeni teoretici, cea mai puternică”, adică era susținută, ca cea mai promițătoare, de aproape întreaga informatică academică din Marea Britanie.
În acest sens, lucrările despre Elbrus erau în concordanță cu cele mai avansate cercetări de la acea vreme și nu a fost vina academicilor britanici că, la mijlocul anilor 1980, lumea s-a întors într-o direcție complet diferită.
De asemenea, menționăm că, conform articolelor teoretice, echipa Burtsev nu a reușit să construiască o mașină, doar familiarizarea cu documentația de pe Burroughs live le-a permis să-și dea seama pe deplin cum funcționează acest lucru.
Comparație de arhitectură
Întreaga linie a Burroughs Large Systems Group a fost construită pe o singură arhitectură B5000. Denumirile mașinilor erau extrem de extravagante. Ultimele trei cifre au indicat generația de mașini, iar prima - numărul de serie din punct de vedere al puterii în generație.
Astfel, aveam disponibilă seria 000 (singurul reprezentant este strămoșul lui B5000), apoi nu s-au folosit numerele de la 100 la 400 (au trecut la Sisteme Medie și Sisteme Mici), iar seria următoare a primit indicele 500. Avea trei computere, împărțite la putere - mai simplu (B5500), mai complicat (B6500) și, teoretic, cel mai puternic (B8500).
Cu toate acestea, B6500 s-a blocat deja și, ca urmare, seria a rămas blocată pe modelul mai tânăr. Următorul număr 600 a renunțat și el (pentru a nu fi confundat cu CDC) și astfel a apărut linia B5700, B6700 și B7700.
Ele diferă în ceea ce privește cantitatea de memorie, numărul de procesoare și alte detalii arhitecturale neprincipale. În cele din urmă, ultima linie a fost seria 800 a două modele (B6800 și B7800) și a 900-a din trei (B5900, B6900 și B7900).
Tot codul scris pentru sistemele mari este reintrat din cutie, iar programatorul de sistem nu trebuie să facă eforturi suplimentare pentru aceasta. Pentru a spune simplu, programatorul a scris codul pur și simplu, fără să se gândească deloc că ar putea funcționa în modul multi-utilizator, sistemul a preluat controlul asupra acestuia.
Nu exista un asamblator, limbajul de sistem era un superset al ALGOL - limbajul ESPOL (Executive Systems Problem Oriented Language), în care erau scrise nucleul OS (MCP, Master Control Program) și toate programele de sistem.
A fost înlocuit cu mai avansat NEWP (New Executive Programming Language) din seria 700. Au fost dezvoltate încă două extensii pentru lucrul eficient cu datele - DCALGOL (comunicații de date ALGOL) și DMALGOL (Gestionarea datelor ALGOL), și a apărut un limbaj separat de linie de comandă WFL (Work Flow Language) pentru gestionarea eficientă a MCP.
Compilatoarele Burroughs COBOL și Burroughs FORTRAN au fost, de asemenea, scrise în ALGOL și optimizate cu atenție pentru a ține cont de toate nuanțele arhitecturii, astfel încât versiunile Large Systems ale acestor limbaje au fost cele mai rapide de pe piață.
Adâncimea de biți a mașinilor Burroughs mari a fost în mod convențional de 48 de biți (+3 biți de etichetă). Programele constau din entități speciale - silabe de 8 biți, care puteau fi un apel la un nume, o valoare sau alcătuiesc un operator, a căror lungime varia de la 1 la 12 silabe (aceasta a fost o inovație semnificativă a seriei 500, clasic B5000 a folosit instrucțiuni fixe cu lungimea de 12 biți).
Limbajul ESPOL în sine a avut mai puțin de 200 de instrucțiuni, toate se potrivesc în silabe de 8 biți (inclusiv operatorii puternici de editare a liniilor și altele asemenea, fără ele existau doar 120 de instrucțiuni). Dacă eliminăm operatorii rezervați pentru sistemul de operare, cum ar fi MVST și HALT, setul folosit în mod obișnuit de programatorii la nivel de utilizator ar fi mai mic de 100. Unii operatori (cum ar fi Name Call și Value Call) ar putea conține perechi de adrese explicite, alții sunt folosiți. o stivă de ramificare avansată.
Burroughs nu avea registre disponibile programatorului (pentru mașină, partea de sus a stivei și următorul au fost interpretate ca o pereche de registre), respectiv, nu era nevoie ca operatorii să lucreze cu ele și diverse sufixe/prefixe De asemenea, nu au fost necesare pentru a indica opțiunile pentru efectuarea operațiunilor între registre, deoarece toate operațiunile au fost aplicate în partea de sus a stivei. Acest lucru a făcut codul extrem de dens și compact. Mulți operatori au fost polimorfi și și-au schimbat activitatea în conformitate cu tipurile de date care erau definite de etichete.
De exemplu, în setul de instrucțiuni Large Systems, există o singură instrucțiune ADD. Un asamblator modern tipic conține mai mulți operatori de adăugare pentru fiecare tip de date, cum ar fi add.i, add.f, add.d, add.l pentru numere întregi, float, double și longs. În Burroughs, arhitectura distinge doar între numere de precizie simple și duble - numerele întregi sunt pur și simplu reali cu exponent zero. Dacă unul sau ambii operanzi au eticheta 2, se efectuează adăugarea de precizie dublă, în caz contrar, eticheta 0 indică precizie simplă. Aceasta înseamnă că codul și datele nu pot fi niciodată incompatibile.
Lucrul cu stiva în Burroughs este implementat foarte frumos, nu vom plictisi cititorii cu detalii, doar credeți-ne pe cuvânt.
Remarcăm doar că operațiile aritmetice au luat o singură silabă, operațiunile de stivă (NAMC și VALC) au luat două, ramurile statice (BRUN, BRFL și BRTR) au luat trei, iar literalele lungi (de exemplu, LT48) au luat cinci. Drept urmare, codul era mult mai dens (mai precis, avea mai multă entropie) decât în arhitectura modernă RISC. Creșterea densității a redus pierderile de cache de instrucțiuni și, prin urmare, a îmbunătățit performanța.
Din arhitectura sistemului, remarcăm SMP - multiprocesor simetric de până la 4 procesoare (aceasta este în seria 500, începând cu seria 800, SMP a fost înlocuit cu NUMA - Acces la memorie non-uniform).
Burroughs a fost în general pionierii în utilizarea mai multor procesoare conectate printr-o magistrală de mare viteză. Linia B7000 putea avea până la opt procesoare, cu condiția ca cel puțin unul dintre ele să fie un modul I/O. B8500 trebuia să aibă 16, dar în cele din urmă a fost anulat.
Spre deosebire de Seymour Cray (și Lebedev și Melnikov), inginerii Burroughs au dezvoltat ideile unei arhitecturi masiv paralele - conectând multe procesoare paralele relativ slabe cu o memorie comună, în loc să folosească una vectorială super-puternică.
Așa cum se arată poveste Această abordare a ajuns să fie cea mai bună.
În plus, Large Systems au fost primele mașini de stivă de pe piață, iar ideile lor au stat mai târziu la baza limbajului Forth și a calculatoarelor HP 3000. stivă de saguaro (acesta este un astfel de cactus, așa că ei numesc stiva cu ramuri). Toate datele au fost stocate pe stivă, cu excepția matricelor (care puteau include atât șiruri, cât și obiecte), paginile au fost alocate pentru acestea în memoria virtuală (prima implementare comercială a acestei tehnologii, înaintea S/360).
Un alt aspect binecunoscut al arhitecturii sistemelor mari a fost utilizarea etichetelor. Acest concept a apărut inițial în B5000 pentru a crește securitatea (unde eticheta pur și simplu separa codul și datele, precum bitul NX modern), începând cu seria 500, rolul etichetelor a fost extins semnificativ. Le-au fost alocați 3 biți în loc de 1, astfel încât au fost disponibile un total de 8 opțiuni de etichetă. Unele dintre ele sunt: SCW (Software Control Word), RCW (Return Control Word), PCW (Program Control Word) și așa mai departe. Frumusețea ideii era că bitul 48 era doar pentru citire, așa că etichetele ciudate indicau cuvinte de control care nu puteau fi modificate de utilizator.
Stiva este foarte bună, dar cum să lucrezi cu obiecte care nu se încadrează în el din cauza structurii lor, de exemplu, șiruri? La urma urmei, avem nevoie de suport hardware pentru a lucra cu matrice.
Foarte simplu, Large Systems folosește descriptori pentru asta. Descriptorii, după cum sugerează și numele, descriu zonele de stocare ale structurilor, precum și solicitările și rezultatele I/O. Fiecare descriptor conține un câmp care indică tipul, adresa, lungimea și dacă datele sunt stocate în magazin. Desigur, sunt marcate cu propria etichetă. Foarte interesantă este și arhitectura descriptorilor Burroughs, dar nu vom intra în detalii aici, observăm doar că memoria virtuală a fost implementată prin intermediul acestora.
Diferența dintre Burroughs și majoritatea celorlalte arhitecturi este că folosesc memorie virtuală paginată, ceea ce înseamnă că paginile sunt paginate în bucăți de dimensiuni fixe, indiferent de structura informațiilor din ele. Memoria virtuală B5000 funcționează cu segmente de diferite dimensiuni, care sunt descrise de descriptori.
În ALGOL, granițele matricei sunt complet dinamice (în acest sens, Pascal cu matricele sale statice este mult mai primitiv, deși acest lucru este fixat în versiunea Burroughs Pascal!), iar în sistemele mari, o matrice este alocată nu manual atunci când este declarată. , dar automat când este accesat.
Drept urmare, apelurile de sistem de alocare de memorie de nivel scăzut, cum ar fi legendarul malloc în C, nu mai sunt necesare. Acest lucru elimină un strat uriaș de tot felul de auto-shot-uri pentru care C este atât de faimos și salvează programatorul de sistem de o grămadă de rutină complexă și tristă. De fapt, sistemele mari sunt mașini care acceptă colectarea gunoiului la JAVA și în hardware!
În mod ironic, mulți utilizatori Burroughs, care au trecut la el în anii 1970 și 1980 și și-au portat programele (aparent corecte!) din limbajul C, au găsit în ele o mulțime de erori legate de depășirile de buffer.
Problema restricțiilor fizice privind lungimea descriptorului, care nu permitea adresarea directă a mai mult de 1 MB de memorie, a fost rezolvată elegant la sfârșitul anilor 1970 odată cu apariția mecanismului ASD (Advanced Segment Descriptors), care a făcut posibilă alocați terabytes de RAM (în computerele personale, acest lucru a apărut abia la mijlocul anilor 2000 - X).
În plus, așa-numitul. Întreruperile p-bit, ceea ce înseamnă că a fost alocat un bloc de memorie virtuală, pot fi utilizate în Burroughs pentru analiza performanței. De exemplu, în acest fel puteți observa că procedura care alocă o matrice este apelată în mod constant. Accesarea memoriei virtuale reduce drastic performanța, motiv pentru care computerele moderne încep să funcționeze mai repede dacă conectați un alt cip RAM.
La mașinile Burroughs, analiza întreruperilor p-bit ne-a permis să găsim o problemă sistemică în software și să echilibrăm mai bine sarcina, ceea ce este important pentru mainframe care rulează 24x7 pe tot parcursul anului. În cazul mașinilor mari, economisirea chiar și a câteva minute de timp pe zi s-a transformat într-o bună creștere finală a productivității.
În cele din urmă, etichetele, precum etichetele, au fost responsabile pentru o creștere semnificativă a securității codului. Unul dintre cele mai bune instrumente pe care le are un hacker pentru a compromite sistemele de operare moderne este un buffer overflow clasic. Limbajul C, în special, folosește cel mai primitiv și predispus la erori de a marca sfârșitul liniilor, folosind octetul nul ca semnal de sfârșit de linie în fluxul de date în sine (în general, o astfel de neglijență distinge multe lucruri create , s-ar putea spune, în stil academic, adică oameni deștepți care nu au, însă, calificări speciale în domeniul dezvoltării).
În Burroughs, pointerii sunt implementați ca inode. În timpul indexării, acestea sunt verificate de hardware la fiecare creștere/descreștere pentru a evita depășirile limitelor blocului. În timpul oricărei citiri sau copieri, atât blocurile sursă, cât și blocurile țintă sunt controlate de descriptori doar pentru citire pentru a menține integritatea datelor.
Drept urmare, o clasă semnificativă de atacuri devine imposibilă, în principiu, și multe erori în software pot fi surprinse chiar și în etapa de compilare.
Nu e de mirare că Burroughs este atât de iubit de universități. În anii 1960-1980, programatorii calificați, de regulă, au lucrat în corporații mari, oamenii de știință au scris software pentru ei înșiși, ca urmare, sistemele mari și-au făcut munca extrem de ușoară, făcând imposibilă dezastrul în orice program.
Burroughs a influențat un număr mare de tehnologii.
După cum am spus, linia HP 3000, precum și calculatoarele lor legendare încă folosite astăzi, au fost inspirate de stiva Large Systems. Serverele tolerante la erori ale Tandem Computers au purtat, de asemenea, amprenta acestei capodopere de inginerie. Pe lângă Forth, ideile lui Burroughs au influențat semnificativ Smalltalk, părintele tuturor OOP și, desigur, arhitectura mașinii virtuale JAVA.
De ce s-au stins astfel de mașini grozave?
Ei bine, în primul rând, nu s-au stins imediat, arhitectura clasică de descriptor de etichete Burroughs a continuat continuu în linia mainframe-ului UNISYS până în 2010 și abia apoi a pierdut teren în fața serverelor de pe banalul Intel Xeon (pe care chiar și IBM este extrem de greu de concurat). cu). Deplasarea a avut loc dintr-un motiv banal, care a ucis toate celelalte mașini exotice din anii 1980.
În anii 1990, procesoarele de uz general, cum ar fi DEC Alpha și Intel Pentium Pro, au fost pompate până la o performanță atât de extraordinară, încât o mulțime de trucuri arhitecturale elaborate au devenit inutile. SPARCserver-1000E pe o pereche de SuperSPARC-II de 90 MHz l-a învins pe Elbrus din toate opțiunile ca pe o broască țestoasă.
Al doilea motiv pentru care Burroughs a căzut au fost aceleași probleme care aproape au ucis Apple în anii 1980, exacerbate de amploarea afacerii mainframe-urilor. Mașinile lor erau atât de complexe încât au fost extrem de costisitoare și consumatoare de timp pentru a fi dezvoltate, așa că practic au realizat doar versiuni ușor îmbunătățite ale aceleiași arhitecturi în anii 1970. De îndată ce Burroughs a încercat să se mute în altă parte (ca în cazul B6500 sau B8500), proiectul a început să alunece, să absoarbă bani cu viteza unei găuri negre și în cele din urmă a fost anulat (cum ar fi Apple III și Lisa eșuate). .
Scara mainframe a însemnat că Burroughs a vândut computere pentru milioane de dolari cu întreținere nebunește de costisitoare. De exemplu, B8500 trebuia să aibă 16 procesoare, dar costul estimat al unei configurații chiar și cu trei era de peste 14 milioane de dolari și, prin urmare, contractul de furnizare a acestuia a fost reziliat.
Pe lângă costul fenomenal al mașinilor în sine, sistemele centrale mai vechi ale companiei au cerut o sumă uriașă de bani pentru sprijin. Pachetul anual de întreținere, service și toate licențele pentru toate programele, în cazul modelului top-end B7800, costa aproximativ 1 milion de dolari pe an, nu toată lumea își putea permite un asemenea lux!
Mă întreb dacă petroliștii sovietici și-au cumpărat un service complet sau și-au reparat ei înșiși Burroughs, cu un cuvânt puternic și un baros?
Așa că afacerea Burroughs șchiopăta mereu, lipsind amploarea și puterea IBM. Nu puteau face mașini ieftine din cauza complexității dezvoltării, iar cumpărătorii de mașini scumpe, având în vedere lupta activă cu concurenții, nu au fost de ajuns pentru a crește profiturile și posibilitatea de a investi bani în plus în dezvoltare și de a reduce prețurile, făcând mașinile mai competitive.
Sperry UNIVAC a suferit aceleași probleme, în cele din urmă, în 1986, cele două corporații au fuzionat pentru a supraviețui pentru a forma UNISYS, care de atunci produce mainframe.
Pe lângă arhitecturile menționate, Burtsev a folosit cu adevărat experiența 5E26 și 5E92b în ceea ce privește controlul erorilor hardware. Ambele computere erau capabile să detecteze hardware și să corecteze orice erori de un bit, iar în proiectul Elbrus acest principiu a fost dus la noi culmi.
Așadar, așteptăm răspunsul la cea mai fascinantă întrebare - a fost Elbrus El Burrows?
După cum ne amintim, Ailif a abandonat modelul clasic von Neumann, mașina ca stocare liniară de instrucțiuni și date. Stiva saguaro de la Burroughs a fost o structură arborescentă care reflectă execuția codului paralel și ierarhia proceselor într-un mediu de programare multi-utilizator. De remarcat, apropo, că ALGOL, cu structura sa ierarhică de bloc, se potrivește perfect pe stivă, motiv pentru care implementarea sa în sistemele mari a avut atât de mult succes.
Această filozofie a designului integrat a fost promovată în mod non-trivial de arhitecții de sistem Elbrus, care au ridicat-o la un nou nivel. În special, în loc de mai multe limbi specializate, un grup de dezvoltatori de la ITMiVT a creat un El-76 universal, asemănător Algol.
Noutățile arhitecturale nu s-au încheiat aici.
O comparație directă a mașinilor este dată în tabelul de mai jos, vechiul B6700 în ansamblu arată bine pe fundalul unui computer cu 17 ani mai tânăr.
De la interesant - spre deosebire de B6700, Elbrus era monstruos de imens.
Prima versiune ocupa 300 mp. m într-un singur procesor și 1 mp. m într-o configurație cu 270 procesoare, iar al doilea - respectiv 10 și un incredibil de 420 mp. m, luând astfel laurii celui mai mare computer din istorie chiar de la IBM AN / FSQ-2 Project SAGE, care, fiind unul tubular, ocupa 260 mp. m.
CPU-ul ambelor mașini se bazează pe o arhitectură stivă CISC cu notație poloneză inversă. Codul unui program compilat constă dintr-un set de segmente. Un segment corespunde de obicei unei proceduri sau unui bloc dintr-un program. Când începe execuția programului, sunt alocate două locații de memorie: una pentru stivă și una pentru dicționarul de segmente, care este folosit pentru a se referi la mai multe segmente de program din RAM. Zonele de memorie pentru segmentele de cod și matricele sunt alocate de sistemul de operare la cerere.
Descriptorii din ambele mașini sunt responsabili pentru reintrarea codului prin organizarea partajării automate a memoriei între firele de execuție. Codul și datele sunt strict separate prin etichete, descriptorii vă permit să rulați cod identic pe seturi de date diferite pentru utilizatori diferiți, cu garanția protecției acestora.
Ambele computere folosesc chiar registre identice cu scop special (de exemplu, fiecare mașină are registre de bază de stivă, limită de stivă și registre de vârf) și instrucțiuni de gestionare a stivei.
Burroughs și Elbrus au o filozofie foarte asemănătoare, dar diferă foarte mult în designul procesorului în sine.
Procesorul B6700 constă dintr-un adunator pe 48 de biți, o unitate de procesare a adreselor, șapte controlere de funcție (program, aritmetică, șir, ajustare stivă, întrerupere, transfer și memorie) și un set de registre. Acestea din urmă includ 4 registre de date de 51 de biți (două elemente de top stivă, valoare curentă, valoare intermediară) și 48 de registre de instrucțiuni de 20 de biți (32 de registre de afișare responsabile pentru stocarea punctelor de intrare în procedurile care se execută în prezent și 8 registre de bază fiecare). și registrele index).
Cel mai interesant lucru din procesor a fost un bloc extrem de complicat, așa-zisul. controlori ai unei familii de operațiuni (în cantitate de 10 bucăți), care, din blocurile funcționale disponibile, au construit o conductă de calcul pentru fiecare comandă. Acest lucru a permis reducerea semnificativă a costului tranzistorilor.
Controlerul transmite instrucțiunea decodificată în registrul Cuvântului de instrucțiuni al programului curent și selectează controlerul adecvat al familiei de operator. Caracteristica cheie este că instrucțiunile sunt executate strict secvenţial, în ordinea dictată de compilator. Instrucțiunile aritmetice nu se pot suprapune deoarece există un singur sumator în CPU.
Aceasta a fost principala diferență între procesorul Elbrus. Babayan și-a bătut cu mândrie pieptul cu pumnul și a declarat „primul superscalar din lume în Elbrus” (care nu a avut deloc legătură cu dezvoltarea), dar, în practică, Burtsev a studiat cu atenție arhitectura marelui CDC 6600 pentru a învăța secretele interacțiunii între grupuri de blocuri funcționale în transportoare paralele.
De la CDC 6600, Elbrus a împrumutat arhitectura mai multor blocuri funcționale (10 în total): adunator, multiplicator, divizor, bloc logic, bloc de conversie codificare BCD, bloc de apel operand, bloc de scriere operand, bloc de procesare șir, bloc de execuție a subrutinei și indexare bloc.
Există o suprapunere funcțională între aceste blocuri și controlerele B6700, dar există și diferențe importante, de exemplu, aritmetica în Elbrus are 4 grupuri independente în loc de unul.
Mai multe ALU au fost deja folosite în alte mașini, dar niciodată în lume - pe un procesor stivă. Desigur, acest lucru nu s-a făcut din cauza marei prostie a dezvoltatorilor occidentali. Stiva, prin definiție, presupune adresarea zero - toți operanzii necesari trebuie să se afle deasupra. Evident, în absența adreselor tradiționale, o singură operație pe ciclu se poate adresa corect la partea superioară - aceasta exclude practic funcționarea blocurilor paralele.
Grupul lui Burtsev a trebuit să pervertize monstruos pentru a ocoli această limitare.
De fapt, procesorul de stivă B6700 din versiunea Elbrus a încetat deloc să mai fie un procesor de stivă! Miracolele nu se întâmplă și un arici nu se încrucișează cu un șarpe, așa că arhitectura internă, invizibilă pentru programator, a trebuit să fie una clasică de registru. Controlerul primește și decodifică comanda ca de obicei, apoi o convertește în format de registru intern. B6700 a interpretat doar 2 elemente de sus ale stivei ca registre interne, Elbrus - 32 de elemente! De fapt, din stivă a rămas un singur nume.
Desigur, acest lucru ar fi complet inutil dacă CU nu ar putea încărca toate dispozitivele funcționale în paralel. Așa s-a dezvoltat mecanismul execuției speculative, care este și absolut original.
Instrucțiunile Elbrus pot fi transmise blocurilor funcționale înainte ca toți operanzii necesari să fie disponibili, odată încărcați, ei vor aștepta pur și simplu date. De fapt, execuția are loc după principiul arhitecturii fluxului de date, ordinea exactă de execuție depinde de ordinea în care operanzii devin disponibili.
Ce au realizat până la urmă?
Ei bine, reacția unui programator modern la astfel de decizii sălbatice este evidentă:
Teoretic, dezvoltatorii mașinilor de etichetare pure au pornit de la faptul că la mijlocul anilor 1970 încă nu existau arhitecturi și compilatoare capabile de cel puțin o anumită paralelizare automată a codului, drept urmare, majoritatea sistemelor multiprocesor nu puteau fi încărcate eficient. complet, iar unitățile de execuție erau adesea inactiv. Calea de ieșire din acest impas a fost arhitectura superscalară sau notoriile mașini VLIW, dar acestea erau încă departe (deși primul procesor superscalar a fost folosit de același Cray în CDC6600 în 1965, încă nu simțea un miros de producție de masă aici. ). Și astfel s-a născut ideea de a facilita munca unui programator prin transferul arhitecturii într-un limbaj Java. Cu toate acestea, merită remarcat faptul că nu este ușor să faci un superscalar bun pe o arhitectură stivă - este mult mai ușor de realizat pentru sistemele de instrucțiuni RISC. Să vedem ce fel de superscalar este în Elbrus-2: „Rata de procesare a comenzii în dispozitivul de control poate varia de la două comenzi pentru 1 ciclu la o comandă pentru 3 cicluri. Cele mai comune combinații de comenzi sunt procesate la viteza maximă: citiți valoarea și comanda aritmetică; încărcați adresa și preluați elementul de matrice; descărcați adresa și scrieți-o."
В результате мы имеем, то, что имеем – суперскаляр на две инструкции за такт, причем примитивнейшие инструкции. Гордиться тут нечем, хорошо хоть чтение данных умеют на арифметику накладывать (и то при попадании в кэш).
În principiu, URSS în acest sens s-a învins pe sine, mașinile Burroughs, așa cum am menționat deja, nu s-au descurcat fără astfel de bibelouri nu din cauza prostiei arhitecților lor. Au vrut să facă o arhitectură pură și au făcut-o corect.
În Elbrus, un nume a rămas din simplitatea elegantă a stivei, în timp ce mașina a devenit cu un ordin de mărime mai scumpă și mai complicată (ce naiba a fost să depanezi procesorul Elbrus, ne va spune mai târziu persoana care a făcut asta), dar în performanță, încă nu a câștigat cu adevărat - a primit un amestec de deficiențe ale ambelor clase de mașini.
În general, acesta este cazul când ar fi mai bine să furăm ideea așa cum este, fără a încerca sovietizarea, adică să o extindem și să o adâncim.
Ce era cu matricele?
Burtsev a băgat și aici cele 5 copeici.
În Burroughs B6700, toate elementele matricei sunt accesate indirect, prin indexare prin descriptorul matricei. Acest lucru necesită un ciclu suplimentar. În Elbrus, au decis să elimine acest ciclu și au adăugat un bloc hardware pentru preîncărcarea elementelor de matrice în memoria cache locală. Blocul index conține memorie asociativă, care stochează adresa elementului curent împreună cu pasul în memorie.
Ca rezultat, mânerul este necesar doar pentru a scoate primul element al matricei; toți ceilalți pot fi contactați direct. Memoria asociativă poate stoca informații despre șase matrice, iar calcularea adresei unui element dintr-o buclă durează doar un ciclu, elementele matricei pentru chiar și 5 iterații ale buclei pot fi extrase în avans.
Cu această inovație, dezvoltatorii au obținut o accelerare semnificativă a operațiunilor vectoriale în Elbrus în comparație cu B6700, care a fost construit ca o mașină pur scalară.
Arhitectura memoriei a suferit, de asemenea, modificări semnificative.
B6700 nu avea cache, ci doar un set local de registre speciale. În Elbrus, memoria cache constă din patru secțiuni separate: un buffer de instrucțiuni (512 cuvinte) pentru stocarea instrucțiunilor executate de program, un buffer de stivă (256 de cuvinte) pentru stocarea celei mai active părți (de sus) a stivei, care altfel este stocată. în memoria principală; tampon de matrice (256 de cuvinte) pentru stocarea elementelor de matrice care sunt procesate în cicluri; memorie asociativă pentru date globale (1 cuvinte) pentru alte date decât cele stocate în alte buffere. Aceasta include variabilele globale ale programului, mânerele și datele locale ale procedurii care nu se potrivesc în buffer-ul stivei.
Această organizare cache a făcut posibilă includerea eficientă a unui număr relativ mare de procesoare într-o configurație de memorie partajată.
Care este problema cu înșurubarea memoriei cache la un sistem multiprocesor?
Cert este că fiecare procesor poate avea propria copie locală a datelor, dar dacă dorim să forțăm procesoarele să proceseze o sarcină în paralel, atunci trebuie să ne asigurăm că conținutul cache-urilor este identic.
O astfel de verificare se numește menținerea coerenței cache-ului și necesită numeroase accesări la RAM, ceea ce încetinește îngrozitor sistemul și distruge întreaga idee. De aceea, numărul de procesoare din arhitectura SMP - multiprocesor simetric, depășește rar 4 bucăți (chiar și acum 4 este numărul maxim clasic de socluri dintr-o placă de bază de server).
Mainframe-ul cu dublu procesor IBM 3033 (1978) a folosit un design simplu de stocare prin care datele modificate în cache sunt actualizate imediat în RAM.
IBM 3084 (1982, 4 procesoare) a folosit o schemă de coerență mai avansată în care transferul de date în RAM putea fi amânat până când intrările din cache erau suprascrise sau până când un alt procesor accesa intrările de date corespunzătoare din memoria principală.
De aceea, B3 cu 6700 procesoare a făcut fără cache - procesoarele sale erau deja prea fanteziste.
Coerența cache-ului în Elbrus a fost menținută prin utilizarea conceptului de secțiune critică într-un program, care este bine cunoscut arhitecților OS. Părțile programului care accesează resurse (date, fișiere, periferice) partajate de mai multe procesoare au configurat un semafor special în momentul accesării, ceea ce înseamnă intrarea în secțiunea critică, după care resursa a fost blocată pentru toate celelalte procesoare. După ce ați părăsit-o, resursa a fost deblocată din nou.
Având în vedere că secțiunile critice au reprezentat (cel puțin conform dezvoltatorului) aproximativ 1% din programul mediu, 99% din timpul partajării cache-ului nu a implicat costul general de menținere a coerenței. Instrucțiunile dintr-un buffer de instrucțiuni sunt, prin definiție, statice, astfel încât copiile lor în mai multe cache-uri rămân identice. Acesta este unul dintre motivele pentru care Elbrus a suportat până la 10 procesoare.
În general, arhitectura sa este un exemplu de utilizare foarte timpurie a unui cache segmentat, un principiu similar (buffer de stivă, buffer de instrucțiuni și buffer de memorie asociativă) a fost deja implementat în B7700, dar a apărut în 1976, când majoritatea au fost finalizate lucrările de realizare a arhitecturii Elbrus.
Astfel, Elbrus primește pe bună dreptate titlul de unul dintre primele sisteme de uz general din lume cu memorie partajată de 10 procesoare.
Din punct de vedere tehnic (ținând cont de faptul că Elbrus-2 a funcționat normal abia în 1989), primul supercomputer de acest tip lansat a fost Sequent Balance 8000 cu 12 procesoare National Semiconductor NS32032 (1984; versiunea Balance 1986 cu 21000 de procesoare a fost lansată în 30). ), dar ideea în sine a venit grupului Burtsev cu zece ani mai devreme.
Modelul de memorie Elbrus a fost extrem de eficient.
De exemplu, executarea unui program simplu în stilul adăugării mai multor numere cu reatribuire necesară în cazul S/360 de la 620 de accesări la memorie (dacă este scris în ALGOL) la 46 (dacă în asamblator), 396 și 54 în cazul de BESM-6 și doar 23 în " Elbrus.
La fel ca mașinile Burroughs, Elbrus folosește etichete, dar utilizarea lor a fost extinsă de multe ori.
În zelul lor de a transfera cât mai mult control posibil hardware-ului, grupul lui Burtsev a dublat lungimea etichetei la 6 biți. Ca rezultat, mașina a putut să facă distincția între operanzi de precizie jumătate/singuri/duble, numere întregi/numere reale, cuvinte goale/pline, etichete (inclusiv lucruri specializate precum „etichetă privilegiată fără blocaj de întrerupere extern” și „etichetă fără informații despre adresă”. recorder"), semafore, cuvinte de control și altele.
Unul dintre obiectivele principale ale creării etichetelor a fost simplificarea programării. Dacă blocurile funcționale ar putea distinge între operanzi reali și întregi, ar putea fi proiectate pentru a se adapta la calcule pe oricare, și nu ar fi nevoie de blocuri scalare și reale separate.
De fapt, Elbrus a implementat tastarea dinamică la un nivel comparabil cu OOP modern și în hardware.
Un alt scop al etichetelor era detectarea erorilor, cum ar fi o încercare de a efectua o operație aritmetică asupra unei instrucțiuni, etichetele puteau fi folosite și pentru a proteja memoria, a restricționa scrierea anumitor date etc.
În domeniul etichetelor, Elbrus a dus ideile mașinii de bază și ale modelului B6700 la un nou nivel de sofisticare.
Toate acestea au făcut posibilă realizarea a ceea ce arhitecții Burroughs nu au realizat. După cum ne amintim, aveau nevoie de extensii ALGOL separate pentru scrierea codului OS și gestionarea ulterioară a sistemului. Dezvoltatorii lui „Elbrus” au abandonat această idee și au creat un singur limbaj universal complet „El-76”, în care totul putea fi scris.
Pentru a scrie un întreg sistem de operare într-un limbaj de nivel înalt (inclusiv codul responsabil pentru lucrurile interne de cel mai jos nivel, cum ar fi alocarea memoriei și comutarea proceselor), necesită hardware special de foarte înalt nivel. De exemplu, comutarea proceselor în sistemul de operare Elbrus a fost implementată ca o secvență de operatori de atribuire care efectuează acțiuni bine definite pe registre hardware speciale.
Designul RAM-ului la ambele mașini este extrem de asemănător, deși Elbrus (mai ales în a doua versiune) conține mult mai multă memorie.
RAM „Elbrus” este organizată ierarhic, secțiunea de memorie (1 dulap) este formată din 4 module, fiecare modul este format din 32 de blocuri de 16 cuvinte. Alternarea este posibilă la mai multe niveluri: între secțiuni, între module din cadrul unei secțiuni și în cadrul modulelor individuale. Din fiecare modul de memorie pot fi citite până la patru cuvinte într-un ciclu. Lățimea de bandă maximă a memoriei este de 450 MB/s, deși rata maximă de transfer de date cu fiecare procesor este de 180 MB/s.
Schemele de gestionare a memoriei din B6700 și Elbrus sunt în general foarte asemănătoare. Memoria este organizată în segmente de lungime variabilă care reprezintă secțiuni logice ale unui program așa cum este definit de compilator. Conform diviziunii logice a programului, segmentele pot avea diferite niveluri de protecție și pot fi partajate între procese.
În B6700, segmentele s-au mutat între stocarea principală și cea virtuală în ansamblu. Matricele au fost o excepție. Acestea ar putea fi stocate în memoria principală în grupuri de câte 256 de cuvinte fiecare, delimitate pe ambele părți prin legături de cuvinte.
În Elbrus, segmentele de cod sunt tratate diferit față de segmentele și matricele de date. Codul este procesat în același mod ca în B6700, iar datele și matricele sunt organizate în pagini a câte 512 cuvinte fiecare.
Abordarea Elbrus este mai eficientă aici și permite o schimbare mai rapidă.
În plus, Elbrus folosește un tip mai modern de memorie virtuală.
În calculatoarele Burroughs, adresarea a fost limitată la 20 de biți sau 220 de cuvinte, memoria fizică maximă din B6700/7700. Prezența segmentelor în memoria principală a fost indicată printr-un bit special în descriptorul lor, care a rămas în RAM în timpul execuției procesului. Nu a existat un concept de spațiu de memorie virtual adevărat care să fie mai mare decât cantitatea totală de memorie fizică; descriptorii conțineau numai adrese fizice.
Mașinile Elbrus au folosit o schemă similară de adresare pe 20 de biți pentru segmentele de program, dar adresarea pe 32 de biți a fost folosită pentru segmentele de date și matricele de constante. Aceasta a oferit un spațiu de memorie virtuală de 232 de octeți (4 gigaocteți). Aceste segmente au fost mutate între memoria virtuală și cea fizică folosind un mecanism de paginare care folosea tabelele de paginare stocate în blocul asociativ al memoriei de paginare pentru a converti între adresele virtuale și cele fizice. Adresele virtuale constau dintr-un număr de pagină și un offset în cadrul paginii. Aceasta este de fapt o implementare modernă cu drepturi depline a memoriei virtuale, la fel ca în mașinile IBM.
Deci, care este verdictul nostru?
Elbrus nu a fost cu siguranță o clonă completă a lui Burroughs B6700 (și chiar B7700).
Mai mult decât atât, el nu era nici măcar clona lui ideologică, mai degrabă, fratele său, deoarece atât B6700, cât și Elbrus s-au inspirat din aceeași sursă - munca lui Ailif la mașina de bază și lucrările Universității din Manchester și strămoșul comun al lui B. -serie, faimosul B5000, a fost o dezvoltare a ideilor întruchipate în mașina R1 a lui Rice. În plus, Elbrus a folosit CDC 6600 ca inspirație (unde fără el) și în ceea ce privește lucrul cu memoria virtuală - IBM S / 360 model 81.
În acest sens, admitem, fără îndoială, că arhitectura Elbrus în sine a fost absolut în tendința evoluțiilor mondiale din anii 1970 și a fost un reprezentant demn al acestora.
Mai mult, în multe aspecte era mult mai avansat decât B6700/7700.
Poate că numai încercările de a atinge superscalarismul pot fi recunoscute ca o decizie cu adevărat nereușită, care a eșuat atât din punct de vedere al arhitecturii (un superscalar pentru 2-3 operațiuni, după cum am menționat deja, nu merită lumânarea), cât și din punct de vedere practic (în consecință, deja monstruos un procesor complex a devenit și mai complex, ocupând un dulap uriaș în formă de T și aproape imposibil de depanat, motiv pentru care a fost agitat atât de mulți ani.
Din păcate, pentru a ocoli astfel de momente, trebuie să avem experiență și intuiție colosală, dezvoltate de-a lungul anilor de muncă cu cele mai bune exemple de arhitectură din lume, care, desigur, nu a fost în Uniune.
Desigur, nu ar trebui să vorbim despre nicio originalitate a lui Elbrus - de fapt, a fost doar o compilație de diverse soluții tehnice, îmbunătățite semnificativ în unele aspecte.
Dar din acest punct de vedere, B5000 a fost și o versiune foarte avansată a lui R1, așa cum am spus deja.
De asemenea, nu există nicio îndoială despre relevanța unei astfel de arhitecturi acum - anii 1970 au trecut de mult, istoria IT s-a întors într-o direcție complet diferită și merge acolo de 40 de ani.
Deci, pe hârtie, „Elbrus” după standardele din 1970 a fost, fără a subestima, o capodopera, destul de comparabilă cu cele mai bune mașini occidentale. Și iată implementarea lui...
Totuși, acesta este un subiect pentru următorul articol.
Pentru a fi continuat ...
informații