HTG обяснява как действително работи процесорът?
Повечето неща в компютъра са сравнително прости за разбиране: RAM, паметта, периферните устройства и софтуерът работят заедно, за да направят компютърна функция. Но сърцето на вашата система, процесора, изглежда като магия дори и за много технологични хора. Тук ще направим всичко възможно, за да го разбием.
Повечето от изследванията за тази статия идват от „Но как да знаем?” От Дж. Кларк Скот. Това е фантастично четиво, отива в много по-голяма дълбочина от тази статия, и си струва двойката долара на Amazon.
Една бележка, преди да започнем: модерните процесори са по-сложни от тези, които очертаваме тук. Това е почти невъзможно за един човек да разбере всеки нюанс на чип с над един милиард транзистори. Въпреки това, основните принципи за това как всичко се съчетава, остават същите, а разбирането на основите ще ви даде по-добро разбиране на съвременните системи.
Стартиране на малък
Компютрите работят в двоичен формат. Те разбират само две състояния: включване и изключване. За да извършвате изчисления в двоичен формат, те използват това, което се нарича транзистор. Транзисторът позволява само източникът на ток да преминава през него към изтичането, ако има ток през портата. По същество това образува двоичен превключвател, който прекъсва проводника в зависимост от втория входен сигнал.
Съвременните компютри използват милиарди транзистори за извършване на изчисления, но на най-ниските нива е необходимо само една шепа да образуват най-основните компоненти, известни като портали.
Логически порти
Сложете няколко транзистора правилно и имате това, което е известно като логическа порта. Логическите врати вземат два бинарни входа, изпълняват операция върху тях и връщат изход. Например, портата OR връща true, ако един от входовете е вярно. И портата проверява дали и двата входа са верни, XOR проверява дали един от входовете е вярен, а N-вариантите (NOR, NAND и XNOR) са инвертирани версии на техните базови врати..
Да правиш математика с Гейтс
Само с две врати можете да правите основно двоично добавяне. Тази диаграма показва половин суматор, създаден с помощта на Logicly, безплатна онлайн площадка за логически порти. XOR портата тук ще се включи, ако е включен само един от входовете, но не и двете. Вратата AND ще се включи, ако и двата входа са включени, но останете на разстояние, ако няма вход. Така че, ако и двете са включени, XOR остава изключен, а портата AND се включва, достигайки до правилния отговор на две:
Това ни дава проста настройка с три отделни изхода: нула, едно и две. Но един бит не може да съхранява нищо по-високо от 1 и тази машина не е твърде полезна, тъй като решава само един от най-простите математически проблеми. Но това е само половин суматор и ако свържете две от тях с друг вход, получавате пълен суматор:
Пълният разширител има три входа - двата числа, които се добавят, и "носенето". Носенето се използва, когато крайният брой надвишава това, което може да се съхранява в един бит. Пълните събирачи ще бъдат свързани във верига, а носенето ще се предава от един суматор към следващия. Носенето се добавя към резултата от портата XOR в първата половина суматор, а има и допълнителна ИЛИ порта, която да се справи и в двата случая, когато такава, която трябва да бъде включена.
Когато и двата входа са включени, носенето се включва и го изпраща на следващия пълен суматор във веригата:
И това е толкова сложно, колкото добавянето. Преместването на повече битове по същество означава само по-пълни суматори в по-дълга верига.
Повечето други математически операции могат да се извършват с добавяне; умножението е просто повтарящо се добавяне, изваждане може да се направи с някаква фантазия малко инверсия, и разделението е просто многократно изваждане. И докато всички съвременни компютри имат хардуерни решения, за да ускорят по-сложните операции, можете технически да направите всичко с пълния разширител..
Автобусът и паметта
Точно сега нашият компютър не е нищо повече от лош калкулатор. Това е така, защото не може да си спомни нищо и не прави нищо с резултатите си. По-горе е показана клетка от паметта, която може да направи всичко това. Под капака се използват много NAND порти, а в реалния живот могат да бъдат доста различни в зависимост от техниката на съхранение, но функцията му е една и съща. Можете да му дадете някои входове, включете битката за запис и ще съхрани входовете вътре в клетката. Това не е просто клетка от паметта, тъй като ние също се нуждаем от начин да прочетем информацията от нея. Това се прави с помощта на механизъм, който е колекция от И Гейтс за всеки бит в паметта, всички свързани с друг вход, битовете за четене. Битовете за запис и четене често се наричат "set" и "enable".
Целият пакет е затворен в това, което е известно като регистър. Тези регистри са свързани към шината, която е пакет от жици, които вървят около цялата система, свързана към всеки компонент. Дори и съвременните компютри имат автобус, въпреки че могат да имат множество автобуси, за да подобрят работата на мултитаскинг.
Всеки регистър все още има бит за запис и четене, но при тази настройка входът и изходът са едно и също нещо. Това всъщност е добро. Например. Ако искате да копирате съдържанието на R1 в R2, ще включите бита за четене за R1, което ще изтласка съдържанието на R1 в шината. Докато битът за четене е включен, трябва да включите бит за запис за R2, който ще копира съдържанието на шината в R2.
Регистрите се използват и за RAM. RAM често се поставя в мрежа, като кабелите вървят в две посоки:
Декодерите приемат двоичен вход и включват съответния номериран проводник. Например, “11” е 3 в двоично число, най-високото 2-битово число, така че декодерът да включи най-високия проводник. На всяко кръстовище има регистър. Всички те са свързани към централната шина и централен вход за запис и четене. Входът за четене и запис ще се включи само ако двата проводника, пресичащи регистъра, също са включени, което ви позволява да изберете регистъра, от който да пишете и четете. Отново, модерната RAM е много по-сложна, но тази настройка все още работи.
Часовникът, степърът и декодерът
Регистрите се използват навсякъде и са основно средство за преместване на данни и съхраняване на информация в процесора. И така, какво им казва да се движат нещата?
Часовникът е първият компонент в сърцевината на процесора и ще се изключва и включва в определен интервал, измерен в херца, или цикли в секунда. Това е скоростта, която виждате рекламирани заедно с процесорите; 5 GHz чип може да изпълнява 5 милиарда цикъла в секунда. Честотата на часовника често е много добър показател за това колко бързо е CPU.
Часовникът има три различни състояния: базов часовник, разрешен часовник и зададен часовник. Базовият часовник ще бъде включен за половин цикъл и ще се изключи за другата половина. Активиращият часовник се използва за включване на регистрите и ще трябва да бъде включен за по-дълго време, за да е сигурно, че данните са активирани. Зададеният часовник винаги трябва да бъде включен едновременно с разрешения часовник, или пък може да се запишат неправилни данни.
Часовникът е свързан със степер, който ще се брои от една до максималната стъпка и ще се върне обратно на едно, когато е направено. Часовникът също е свързан с гейтс AND за всеки регистър, към който CPU може да пише:
Тези И порти също са свързани към изхода на друг компонент, декодера на инструкциите. Декодерът на инструкции взема инструкция като "SET R2 TO R1" и го декодира в нещо, което CPU може да разбере. Той има свой собствен вътрешен регистър, наречен „регистър на инструкциите“, където се съхранява текущата операция. Как точно става това, става въпрос за системата, в която работите, но след като е декодирана, тя ще включи правилния набор и ще разреши битовете за правилните регистри, които ще се запалят според часовника..
Програмните инструкции се съхраняват в RAM (или L1 кеш на съвременни системи, по-близо до CPU). Тъй като програмните данни се съхраняват в регистрите, точно както всяка друга променлива, тя може да бъде манипулирана в движение, за да се прескача около програмата. Това е начинът, по който програмите получават своята структура, с цикли и ако изявления. Инструкцията за скок задава текущото местоположение в паметта, от което декодерът на инструкциите чете от друго местоположение.
Как всичко става заедно
Сега, нашето грубо опростяване на работата на CPU е завършено. Главната шина обхваща цялата система и се свързва с всички регистри. Пълните събирачи, заедно с куп други операции, са опаковани в аритметичната логическа единица или в ALU. Тази ALU ще има връзки към шината и ще има собствени регистри за съхраняване на второто число, на което работи.
За да извършите изчисление, програмните данни се зареждат от системната RAM в секцията за управление. Контролната секция чете два номера от RAM, зарежда първия в регистъра на инструкциите на ALU и след това зарежда втория в шината. Междувременно, той изпраща на ALU код на инструкция, който му казва какво да прави. След това ALU изпълнява всички изчисления и съхранява резултата в различен регистър, от който CPU може да чете и след това да продължи процеса.
Кредит за изображения: Rost9 / Shutterstock