Какво е суперскаларно?

click fraud protection

Ранните компютри са били изцяло последователни. Всяка инструкция, получена от процесора, трябваше да бъде изпълнена изцяло, преди да може да започне следващата. Има пет етапа за повечето инструкции: извличане на инструкции, декодиране на инструкции, изпълнение, достъп до паметта и обратно записване. Съответно тези етапи получават инструкцията, която трябва да бъде изпълнена, отделяйки операцията от стойностите опериран, изпълнете операцията, отворете регистъра, в който ще бъде записан резултатът, и запишете резултата в отворения регистрирам.

Всеки от тези етапи трябва да отнеме един цикъл, за да завърши. За съжаление, ако данните не са в регистър, те трябва да бъдат поискани от кеша на процесора или системната RAM памет. Това е много по-бавно, добавяйки десетки или стотици тактови цикли на латентност. Междувременно всичко останало трябва да изчака, тъй като не могат да се обработват други данни или инструкции. Този тип дизайн на процесора се нарича субскаларен, тъй като изпълнява по-малко от една инструкция на тактов цикъл.

В субскаларен процесор без конвейер всяка част от всяка инструкция се изпълнява по ред. Този дизайн може да постигне по-малко от една завършена инструкция на цикъл.

Конвейерна обработка към скалар

Скаларен процесор може да бъде постигнат чрез прилагане на системен конвейер. Всеки от петте етапа на изпълняваната инструкция се изпълнява в различни битове на хардуера в действителното ядро ​​на процесора. По този начин, ако сте внимателни с данните, които подавате в хардуера за всеки етап, можете да държите всеки от тях зает всеки цикъл. В един перфектен свят това може да доведе до 5 пъти по-висока скорост и процесорът да бъде идеално скаларен, изпълнявайки пълна инструкция на цикъл.

В скаларно конвейерния процесор всеки етап от изпълнението на инструкции може да се извърши веднъж на тактов цикъл. Това позволява максимална производителност от една завършена инструкция на цикъл.

В действителност програмите са сложни и намаляват пропускателната способност. Например, ако имате две инструкции за добавяне „a = b + c“ и „d = e + f“, те могат да се изпълняват в конвейер без проблем. Ако обаче имате „a = b + c“, последвано от „d = a + e“, имате проблем. Ако приемем, че тези две инструкции са непосредствено една след друга, процесът за изчисляване на новата стойност на „a“ няма да е завършил, камо ли да бъде записана обратно в паметта, преди втората инструкция да прочете старата стойност на „a“ и след това да даде грешен отговор за "д".

Това поведение може да се противодейства с включването на диспечер, който анализира предстоящите инструкции и гарантира, че нито една инструкция, която зависи от друга, не се изпълнява в твърде близка последователност. Той всъщност изпълнява програмата в грешен ред, за да поправи това. Това работи, защото много инструкции не разчитат непременно на резултата от предишна.

Разширяване на конвейера до суперскаларен

Суперскаларният процесор може да изпълнява повече от една пълна инструкция на цикъл. Един от начините да направите това е чрез разширяване на тръбопровода, така че да има два или повече бита хардуер, които могат да се справят с всеки етап. По този начин две инструкции могат да бъдат във всеки етап от тръбопровода във всеки цикъл. Това очевидно води до повишена сложност на дизайна, тъй като хардуерът се дублира, но предлага отлични възможности за мащабиране на производителността.

В суперскаларен конвейерен процесор повече от една инструкция може да бъде във всеки етап от конвейера всеки цикъл. Това позволява максимална пропускателна способност на повече от една завършена инструкция на цикъл.

Увеличението на производителността от увеличаване на тръбопроводите обаче засега се мащабира ефективно. Термичните и размерните ограничения поставят някои ограничения. Съществуват и значителни усложнения при планирането. Ефективният диспечер сега е още по-критичен, тъй като трябва да гарантира, че нито един от двата набора инструкции не разчита на резултата от която и да е от другите инструкции, които се обработват.

Предсказателят на разклонения е част от диспечера, която става все по-критична, колкото по-суперскаларен е процесорът. Някои инструкции могат да имат два потенциални резултата, всеки от които води до различни следващи инструкции. Прост пример би бил изразът „ако“. „Ако това е вярно, направете това, в противен случай направете това другото“. Предсказателят на разклонения се опитва да предвиди резултата от операция на разклоняване. След това превантивно планира и изпълнява инструкциите, следвайки това, което смята за вероятен резултат.

Има много сложна логика в съвременните предсказатели на клонове, които могат да доведат до успеваемост на предсказанията на клонове от порядъка на 98%. Правилната прогноза спестява времето, което би могло да бъде загубено в очакване на действителния резултат, неправилната прогноза налага прогнозираният инструкциите и всички техни резултати се отхвърлят и истинските инструкции се изпълняват на тяхно място, което идва с леко наказание спрямо току-що чаках. По този начин високите нива на успеваемост на прогнозиране могат значително да увеличат производителността.

Заключение

Компютърният процесор се счита за суперскаларен, ако може да изпълнява повече от една инструкция за тактов цикъл. Ранните компютри са били изцяло последователни, изпълнявайки само една инструкция наведнъж. Това означаваше, че изпълнението на всяка инструкция отнема повече от един цикъл и така тези процесори бяха субскаларни. Основен тръбопровод, който позволява използването на специфичния за етапа хардуер за всеки етап от инструкция, може да изпълни най-много една инструкция на тактов цикъл, което го прави скаларно.

Трябва да се отбележи, че нито една индивидуална инструкция не се обработва напълно в един такт. Все още са необходими поне пет цикъла. Множество инструкции обаче могат да бъдат в конвейер наведнъж. Това позволява пропускателна способност на една или повече завършени инструкции на цикъл.

Superscalar не трябва да се бърка с hyperscaler, което се отнася до компании, които могат да предложат хипермащабни изчислителни ресурси. Хипермащабното изчисление включва способността за безпроблемно мащабиране на хардуерни ресурси, като изчисления, памет, честотна лента на мрежата и съхранение, според търсенето. Това обикновено се среща в големи центрове за данни и облачни изчислителни среди.