If-Koubou

HTG обяснява: Как функционира процесорът?

HTG обяснява: Как функционира процесорът? (Как да)

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

Повечето от изследванията за тази статия идват от "Но как да разберем" от Дж. Кларк Скот. Това е фантастично четене, отива в много по-голяма дълбочина, отколкото тази статия ще, и е добре си струва няколко пари на Amazon.

Една бележка преди да започнем: модерните процесори са по-сложни от по-сложни от това, което очертаваме тук. Това е почти невъзможно за един човек да разбере всеки нюанс на чип с над един милиард транзистори. Въпреки това, основните принципи за това как всички заедно съвпадат остават същите и разбирането на основите ще ви даде по-добро разбиране за съвременните системи.

Стартирайки Малък

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

Съвременните компютри използват милиарди транзистори за извършване на изчисления, но на най-ниските нива, имате нужда само от шепа, за да формирате най-основните компоненти, известни като порти.

Логически Гейтс

Сложете няколко транзистора правилно и вие имате това, което е известно като логическа порта. Логическите врати вземат два бинарни входа, изпълняват операция по тях и връщат изход. Порцията OR, например, връща true, ако някой от входовете е вярно. AND порта проверява дали и двата входа са верни, XOR проверява дали само един от входовете е вярно, а N-вариантите (NOR, NAND и XNOR) са обърнати версии на базовите им врати.

Правейки математика с портите

Само с две порти можете да направите основно двоично добавяне. Тази диаграма по-горе показва половин суматор, създаден с помощта на Logicly, безплатна онлайн игрална площадка за логически порти. XOR портата ще се включи, ако е включен само един от входовете, но не и двата. Портата AND ще се включи, ако и двата входа са включени, но остават изключени, ако няма вход. Така че, ако и двата са включени, XOR остава настрана и вратата на ИГ се включва, стигайки до правилния отговор на две:

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

Пълният суматор има три входа - двете цифри, които трябва да добавите, и "пренасяне". Пренасянето се използва, когато крайният номер надхвърля това, което може да се съхрани в един бит. Пълните добавки ще бъдат свързани в една верига, а носенето се предава от един суджър на следващия. Носенето се прибавя към резултата от XOR портата в първата половина на уголемяване и има допълнителна OR порта, за да се справя и с двата случая, когато такава ще трябва да бъде включена.

Когато и двата входа са включени, носенето се включва и го изпраща на следващия пълен разширител във веригата:

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

Повечето други математически операции могат да се извършват с добавяне; умножение е само повторно добавяне, изваждане може да се направи с някои фантазия малко инверсия, и разделение е просто многократно изваждане. И докато всички съвременни компютри разполагат с хардуерни решения за ускоряване на по-сложни операции, можете технически да ги направите всичко с пълния набор.

Автобусът и паметта

В момента компютърът ни не е нищо друго освен лош калкулатор. Това е така, защото не може да си спомни нищо и не прави нищо със своите резултати. Показано по-горе е памет клетка, която може да направи всичко това. Под капака, той използва много NAND порти, а в реалния живот може да бъде съвсем различен в зависимост от техниката на съхранение, но функцията му е еднаква. Можете да му дадете някои входове, включете битовете "write" и ще съхранява входовете вътре в клетката. Това не е просто клетка на паметта, тъй като също така се нуждаем от начин да четем информация от нея. Това се осъществява с активиращо устройство, което е колекция от АРА порта за всеки бит в паметта, всички свързани с друг вход, бит "четене". Честотите за записване и четене често се наричат ​​"set" и "enable".

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

Всеки регистър все още има бит за запис и четене, но при тази настройка входът и изходът са едно и също нещо. Това всъщност е добро. Например. Ако искате да копирате съдържанието на R1 в R2, вие ще включите четящия бит за R1, който ще изтласка съдържанието на R1 в шината. Докато битът за четене е включен, бихте включили бита за запис на R2, който ще копира съдържанието на автобуса в R2.

Регистрите се използват и за създаването на RAM. RAM често се разпределя в мрежа, като проводниците се движат в две посоки:

Декодерите вземат двоичен вход и включат съответния номериран проводник. Например, "11" е 3 в двоичен, най-високият 2-битов номер, така че декодерът ще включи най-високата жица. На всяко кръстовище има регистър. Всички те са свързани към централната шина и към централен вход за запис и четене.Както входът за четене, така и за въвеждане на запис ще се включи само ако и двата проводника, преминаващи през регистъра, също са включени, което ефективно ви позволява да изберете регистъра, от който да пишете и четете. Отново модерната RAM е много по-сложна, но тази настройка все още работи.

Часовникът, стъпчачката и декодера

Регистрите се използват навсякъде и са основното средство за преместване на данни и съхраняване на информация в процесора. И какво им казва да движат нещата наоколо?

Часовникът е първият компонент в сърцевината на процесора и ще се изключва и включва в определен интервал, измерен в херц, или цикли в секунда. Това е скоростта, която виждате рекламирана заедно с процесорите; чип от 5 GHz може да изпълни 5 милиарда цикъла в секунда. Скоростта на часовника често е много добра метрика за това колко бързо CPU е.

Часовникът има три различни състояния: базовия часовник, часовника за включване и зададения часовник. Базовият часовник ще бъде включен за половин цикъл и изключен за другата половина. Активиращият часовник се използва за включване на регистрите и ще трябва да бъде включен за по-дълго време, за да се уверите, че данните са активирани. Настроеният часовник винаги трябва да бъде включен едновременно с активиращия часовник или пък могат да бъдат написани неправилни данни.

Часовникът е свързан със стъпката, който ще се брои от една до максимумната стъпка и ще се върне обратно на едно, когато е готово. Часовникът също е свързан към врати AND за всеки регистър, на който CPU може да напише:

Тези врати AND също са свързани с изхода на друг компонент, декодера на инструкциите. Декодерът на инструкциите поема инструкция като "SET R2 TO R1" и го декодира в нещо, което CPU може да разбере. Той има собствен вътрешен регистър, наречен "Регистър на инструкциите", където се съхранява текущата операция. Как точно това се случва, става въпрос за системата, в която се движите, но след като бъде декодирана, тя ще включи правилния комплект и ще даде възможност на битовете за правилните регистри, които ще се изстрелят в съответствие с часовника.

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

Как всичко идва заедно

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

За да извършите изчисление, програмните данни се зареждат от системата RAM в контролната секция. Контролната секция чете две номера от RAM, зареди първата в регистъра на инструкциите на ALU и след това зареди втория в автобуса. В същото време той изпраща на ALU кода на инструкции, който й казва какво да прави. След това ALU извършва всички изчисления и съхранява резултата в различен регистър, който CPU може да прочете и след това да продължи процеса.

Image Credit: Rost9 / Shutterstock