Комп'ютерні уроки

Що є основою роботи процесора. Як працює комп'ютерний процесор? Принцип роботи

Для того щоб зрозуміти, як працює мікропроцесор, поставимо собі питання - а як він повинен працювати? Є теорія (в основному створена постфактум: після того, як перші ЕОМ були вже побудовані та функціонували), яка вказує, як саме будувати алгоритми і що процесор відповідно до цього повинен робити. Ми, звичайно, заглиблюватися в це не будемо, просто констатуємо, що будь-який алгоритм є послідовність деяких дій, записаних у вигляді набору команд, що послідовно виконуються (інструкцій, операторів). При цьому серед таких команд можуть зустрічатися команди переходу, які в деяких випадках порушують вихідну послідовність виконання операторів одно за одним. Серед інших мають бути також команди введення та виведення даних (програма має якось спілкуватися із зовнішнім світом?), а також команди виконання арифметичних та логічних операцій.

Команди повинні десь зберігатися, тому невід'ємною частиною всієї системи має бути пристрій пам'яті програм. Десь треба складати і дані, як вихідні, так і результати роботи програми, тому має бути пристрій пам'яті даних. Оскільки команди та дані, зрештою, все одно є числа, то пам'ять може бути загальна, тільки треба вміти відрізняти, де саме у нас команди, а де – дані. Це є один із принципів фон Неймана, хоча і в мікроконтролерах, про які ми говоритимемо надалі, традиційно використовують не фон-нейманівську, а так звану гарвардську архітектуру, коли пам'ять даних і програм розділені (це поділ, втім, може в певних межах порушуватись). Процесор, побудований по фон Нейману, більш універсальний, наприклад, він дозволяє без особливих проблем нарощувати пам'ять, будувати її ієрархічно і ефективніше перерозподіляти її прямо по ходу роботи. Наприклад, у системі Windows завжди передбачається, що комп'ютер має практично необмежений обсяг пам'яті (вимірюється в терабайтах), а якщо її реально не вистачає, підключається до справи своп-файл на жорсткому диску. У той же час мікроконтролерам подібна гнучкість не особливо потрібна - на їх основі, як правило, будуються вузли, що виконують конкретне завдання і працюють за конкретною програмою, тому потрібну конфігурацію системи нічого не варто передбачити заздалегідь.

МП та МК

До речі, а чому ми постійно говоримо то мікропроцесори (МП), то мікроконтролери (МК)? Мікроконтролер відрізняється від мікропроцесора тим, що він призначений для керування іншими пристроями, і тому має вбудовану розвинену систему введення-виводу, але, як правило, відносно слабше АЛП. Мікроконтролерам дуже добре підходить термін, який за радянських часів мав, щоправда, дещо інше значення - "мікро-ЕОМ", ще точніше звучить англійське "computer-on-chip", однокристальний комп'ютер. Справді, для побудови найпростішого обчислювального пристрою, який міг би виконувати щось корисне, звичайний мікропроцесор, від i4004 до Pentium і Core Duo, доводиться доповнювати пам'яттю, ПЗП із записаною BIOS, пристроями вводу-виводу, контролером переривань, тактовим генератором таймерами тощо - всім тим, що зараз стало об'єднуватися в т.з. "чіпсети". «Голий» МП здатний лише одне: правильно включитися, йому навіть програму завантаження нема звідки взяти.

У той самий час для МК мікропроцесор - це лише ядро, навіть найбільша частина кристала. Для побудови закінченої системи на типовому МК не потрібно взагалі нічого, крім джерела живлення та периферійних виконуючих пристроїв, які б людині визначити, що система працює. Звичайний МК може без додаткових компонентів спілкуватися з іншими МК, зовнішньою пам'яттю, спеціальними мікросхемами (на зразок годинника реального часу або флеш-пам'яті), керувати невеликими (а іноді - і великими) матричними панелями, до нього можна безпосередньо підключати датчики фізичних величин (у тому числа - суто аналогові, АЦП теж часто входять до МК), кнопки, клавіатури, світлодіоди та індикатори, коротше- в мікроконтролерах зроблено все, щоб доводилося якнайменше паяти і замислюватися над підбором елементів. За це доводиться розплачуватися зниженою швидкодією (яка, втім, не так вже й важлива в типових завданнях для МК) і деяким обмеженням в окремих функціях - в порівнянні з універсальними, але в сотні разів дорожчими і фомоздкішими системами на «справжніх » МП. Ви можете мені не повірити, але процесори для персональних комп'ютерів (ПК), про які ми стільки чуємо, займають у загальній кількості процесорів, що випускаються, лише 5-6% - інші складають мікроконтролери різного призначення.

Відповідно до сказаного основний цикл роботи процесора повинен бути таким: вибірка чергової команди (з пам'яті), якщо необхідно - вибірка вихідних даних для неї, виконання команди, розміщення результатів у пам'яті (знову ж таки якщо це необхідно). Вся робота в цьому циклі повинна відбуватися автоматично па командам деякого пристрою управління, що містить тактовий генератор - системний годинник, по якому все синхронізується. Крім того, десь це все має відбуватися - складування даних, коду команди, виконання дій тощо, так що процесор повинен містити якийсь набір робочих регістрів (по суті - невелику за обсягом надшвидку пам'ять), певним чином пов'язаних як між собою, так і з пристроєм управління та АЛУ, який неминуче має бути присутнім.

Вирішальну роль роботі процесора грає лічильник команд. Він автоматично встановлюється на нуль на початку роботи, що відповідає першій команді, і автоматично інкрементується (тобто збільшується на одиницю) з кожною виконаною командою. Якщо в ході справи порядок команд порушується, наприклад, зустрічається команда переходу (розгалуження), то лічильник завантажується відповідний адресу команди - її номер від початку програми. Якщо це не просто розгалуження, а виконання підпрограми, яке передбачає подальше повернення до основної послідовності команд (до наступної команди після виклику підпрограми), то перед переходом до виконання підпрограми поточне значення лічильника команд зберігається в спеціально відведеній для цієї мети області пам'яті - стеку. За командою закінчення підпрограми збережена адреса витягується зі стека, і виконання основної програми продовжується. На щастя, нам самим не доведеться мати справу з лічильником команд, тому що всі вказівки щодо цього містяться в командах, і процесор все робить автоматично.

Мал. 18.2. Блок-схема найпростішого мікроконтролера

Блок-схема найпростішого МК, що містить процесорне ядро ​​та мінімум компонентів для «спілкування» із зовнішнім середовищем, показана на рис. 18.2. Тут ми включили до складу системи пам'ять програм, яка у ПК-процесорів знаходиться завжди окремо (якщо не брати до уваги відносно невеликого обсягу швидкодіючої кеш-пам'яті) - самі знаєте, який обсяг програм буває в персональних комп'ютерах. У більшості сучасних мікроконтролерів постійний пристрій (ПЗУ) для програм входить до складу чіпа і зазвичай становить від V-2 до 8-32 кбайт. Хоча є моделі і з 256 кілобайтами вбудованої пам'яті, але 2-8 кбайт для переважної більшості застосувань цілком достатньо. Вбудований оперативний запам'ятовуючий пристрій (ОЗУ) для зберігання даних у тому чи іншому обсязі також є у всіх сучасних мікроконтролерах, типовий розмір такого ОЗП - від 128-256 байт до 1-4 кбайт. У більшості універсальних контролерів є і деяка кількість вбудованої енергонезалежної пам'яті для зберігання констант-звичайно стільки ж, скільки і ОЗУ даних. Але до пам'яті ми ще повернемося в цьому розділі, а поки що продовжимо про процесори.

Деталі

у перших моделях мікропроцесорів (включаючи і інтелівські процесори для ПК - від 8086 до 80386) процесор виконував команди суворо послідовно: завантажити команду, визначити, що їй потрібні операнди, завантажити ці операнди (за адресою регістрів, які їх повинні містити; ці адреси, як правило, зберігаються відразу після власне коду команди або визначені заздалегідь), потім зробити потрібні дії, складувати результати ... До нашого часу дійшла архітектура суперпопулярних ще недавно мікроконтролерів 8051, що випускаються і досі різними фірмами (Atnnel, Philips), які виконували одну команду аж за 12 тактів (у деяких сучасних аналогах, втім, це менше). Для прискорення роботи почали ділити такти на частини (наприклад, спрацьовувати по передньому та задньому фронтам), але дійсний прорив стався з допомогою конвеєра. З часів Генрі Форда відомо, що продуктивність конвеєра залежить тільки від часу виконання найдовшої операції - якщо поділити команди на етапи і виконувати їх одночасно різними апаратними вузлами, то можна досягти суттєвого прискорення (хоч і не завжди). У мікроконтроллерах Atmel AVR, що розглядаються далі, конвеєр двоступінчастий: коли чергова команда завантажується і декодується, попередня вже виконується і пише результати. В AVR це дозволило виконувати більшість команд за один такт (крім команд розгалуження програми).

Головний пристрій МП, яке пов'язує всі вузли в єдину систему - внутрішня шина даних. Нею всі пристрої обмінюються сигналами. Наприклад, якщо МП потрібно звернутися до зовнішньої, додаткової пам'яті, то при виконанні відповідної команди на шину даних виставляється потрібна адреса, від пристрою управління надходить через неї запит на звернення до потрібних портів вводу/виводу. Якщо порти готові, адреса надходить на виходи портів (тобто відповідні висновки контролера), потім готовності приймаючий порт виставляє на шину прийняті із зовнішньої пам'яті дані, які завантажуються в потрібний регістр, після чого шина даних вільна. Для того щоб всі пристрої не заважали один одному, все це строго синхронізовано, при цьому кожен пристрій має, по-перше, власну адресу, по-друге, може перебувати в трьох станах - працювати на введення, виведення або знаходитися в третьому стані, не заважаючи іншим працювати.

Під розрядністю МП зазвичай розуміють розрядність чисел, із якими працює АЛУ, відповідно, таку ж розрядність мають і робочі регістри. Наприклад, усі ПК-процесори від 1386 до останніх інкарнацій Pentkim були 32-розрядними, деякі останні моделі від Intel та AMD стали 64-розрядними. Більшість мікроконтролерів загального призначення-8-розрядні, але є і 16-, і 32-розрядні. При цьому внутрішня шина даних може мати і більше розрядів - наприклад, щоб одночасно передавати адреси і дані.

Розподіл ринку МК у перші роки тисячоліття був таким: трохи менше половини виробів, що випускаються, становлять 8-розрядні кристали, а другу половину поділили між собою 16- і 32-розрядні, причому частка останніх неухильно зростає за рахунок 16-розрядних. Випускаються навіть 4-розрядні, нащадки першого 14004 року, які займають не більше 10% ринку, але, що цікаво, ця частка знижується дуже повільно.

Нотатки на полях

Зазвичай тактова частота універсальних МК невелика (хоча інженеру 1980-х, коли ПК працювали на частотах не вище 6 МГц, вона здалася б величезною) - порядку 8-16 МГц, іноді до 20 МГц або дещо більше. І це всіх влаштовує – річ у тому, що звичайні МК і не призначені для розробки швидкодіючих схем. Якщо потрібна швидкодія, то використовується інший клас інтегральних схем - ПЛІС, «логічні інтефальні схеми, що профамуються». Найпростіша ПЛІС являє собою набір ніяк не пов'язаних ме>кду собою логічних елементів (найскладніші з них можуть включати і деякі закінчені вузли, на кшталт тригерів і генераторів), які в процесі програмування такого чіпа з'єднуються в нуж1|1ую схему. Комбінаційна логіка працює набагато швидше за тактовні контролери, і для побудови різних логічних схем в даний час застосовують тільки ПЛІС, від використання дискретних елементів («роз-сипухи») в масових масштабах вже давно відмовилися. Ще одна перевага ПЛІС- статичне споживання енергії для деяких серій становить одиниці мікроват, на відміну від МК, які у включеному стані споживають досить багато (якщо не знаходяться в режимі енергозбереження). У сукупності з більш універсальними і значно простішими в користуванні, але менш швидкими та економічними мікроконтролерами, ПЛІС становлять основу більшості масових електронних виробів, які ви бачите на прилавках. У цій книзі ми, звичайно, розглядати ПЛІС не будемо - в аматорській практиці, в основному через дорожнечу відповідного інструментарію і високого порога його освоєння, вони не використовуються, і для конструювання окремих примірників приладів навіть для професійних застосувань їх використовувати недоцільно .

Якщо подробиці внутрішнього функціонування МП нас хвилюють не дуже (центральний вузол - АЛУ ми вже «винаходили» в розділі 15, і цього достатньо, щоб розуміти, що саме відбувається всередині процесорного ядра), то обмін із зовнішнім середовищем нас цікавить у всіх деталях . І тому служать порти ввода/вывода (I/0-port, від input/output). У цьому терміні є деяка невизначеність, оскільки ті, хто програмував для ПК на асемблері, пам'ятають, що у ПК портами вводу/вывода (ПВВ) називалися регістри управління всіма пристроями, крім безпосередньо процесорного ядра. У мікроконтролерах те саме називають «регістром вводу/виводу» (РВВ) - це регістри для доступу до вбудованих компонентів контролера, зовнішнім по відношенню до обчислювального ядра. А це все вузли, якими безпосередньо управляє користувач - від таймерів та послідовних портів до регістру прапорів та управління перериваннями. Крім ОЗУ, доступ до якого забезпечується спеціальними командами, решта в контролері керується через РВВ, і плутати з портами введення-виведення їх не слід.

ПВВ в МК служать для обміну з «довкіллям» (керуються вони, природно, теж внутрішніми регістрами введення-виведення). На схемі рис. 18.2 показано 3 ПВВ - А, В та С; у реальних МК їх може бути і більше, і менше. Ще важливіша кількість висновків цих портів, що найчастіше збігається з розрядністю процесора (але не завжди, як це було у 8086, який мав внутрішню 16-розрядну структуру, а зовні виглядав 8-розрядним). Якщо ми змусимо 8-розрядні порти «спілкуватися», наприклад, із зовнішньою пам'яттю, то на двох з них можна виставити 16-розрядну адресу, а на решті - приймати дані. А як бути, якщо портів два чи взагалі один? (Наприклад, в мікроконтролері АТхххх2313 портів формально два, але один усічений, отже загальна кількість ліній становить 15). Щоб навіть у такій ситуації це було можливо, всі зовнішні порти в МП завжди двонаправлені. Скажімо, якщо портів два, то можна спочатку виставити адресу, а потім переключити порти на вхід та приймати дані. Природно, для цього порти повинні дозволяти роботу на загальну шину - тобто мати третій стан, або вихід із загальним колектором для об'єднання в «монтажне АБО».

Варіанти обох випадків організації вихідної лінії порту показано на рис. 18.3, де наведені спрощені схеми вихідних ліній мікроконтролерів сімейства 8048 - колись широко використовуваного попередника популярного МК 80S1 (наприклад, 8048 був обраний як контролер клавіатури IBM PC). У сучасних МК побудова портів дещо складніша (зокрема замість резистора там польовий транзистор), але для з'ясування принципів роботи це несуттєво.

За першим варіантом (рис. 18.3 а) в МК 8048 побудовані порти 1 і 2. Коли в порт проводиться запис, то логічний рівень надходить з прямого виходу клямки на статичному D-тригері на вхід схеми «І», а з інверсного - на затвор транзистора VT2. Якщо цей рівень дорівнює логічному нулю, то транзистор VT1 замкнений, а VT2 відкритий, на виході також логічний нуль. Якщо рівень дорівнює логічній одиниці, то тимчасово дії імпульсу «Запис» транзистор VT1 відкривається, а транзистор VT2 замикається (вони однакової полярності). Якщо на виході є ємність (а вона завжди є у вигляді розподіленої ємності провідників і ємності входів інших компонентів), то через відкритий VT1 протікає досить великий струм заряду цієї ємності, що дозволяє сформувати хороший фронт переходу з О в 1. Як тільки імпульс «Запис» закінчується, обидва транзистори відключаються, і логічна одиниця на виході підтримується резистором R1. Вихідний опір відкритого транзистора VT1 приблизно 5 кОм, а резистора - 50 кОм. Будь-який інший пристрій, підключений до цієї шині, під час роботи на вихід може лише підтримати логічну одиницю, включивши свій подібний резистор паралельно R1, або зайняти лінію своїм логічним нулем - це, як бачите, і є схема «монтажне АБО». Працюючи на вхід стан лінії просто зчитується під час дії імпульсу «Запис» із вхідного буфера (елемент «В» на рис. 18.3, а).

Другий варіант (рис. 18.3 б), за яким влаштований порт О, є звичайний вихідний каскад КМОП з третім станом, тобто такий порт може працювати на вихід, тільки повністю займай лінію, інші підключені до лінії пристрою при цьому повинні смиренно слухати монополіста , приймаючи сигнали. Це зазвичай не створює особливих труднощів і схемотехнічно навіть переважно через симетрію вихідних сигналів і високий опір для вхідних. Єдина складність виникає при поєднанні такого порту з лінією, що працює за першим варіантом, так як при логічній одиниці на виході можуть виникнути електричні конфлікти, якщо хтось спробує видати в лінію логічний нуль (струм від джерела піде через два відчинені транзистори).

Мал. 18.3. Спрощені схеми портів введення/виводу МК 8048: а - портів 1 та 2; б - порту О

Для забезпечення роботи тристабільного порту за схемою «монтажне АБО» застосовують хитрий прийом: всю лінію «підтягують» до напруги живлення за допомогою зовнішнього резистора (у багатьох МК існує вбудований резистор, що відключається, встановлений аналогічно R1 у схемі рис. 18.3, а), і нормальне стан всіх трьох стабільних портів, що беруть участь - робота на вхід у третьому стані. У цьому режимі завжди буде логічна одиниця. На вихід лінію перемикають тільки, коли треба видати логічний нуль. У цьому випадку, навіть за одночасної активності кількох портів, конфліктів не виникне.

Ви читаєте ці рядки зі смартфона, планшета чи комп'ютера. Будь-який з цих пристроїв ґрунтується на мікропроцесорі. Мікропроцесор є "серцем" будь-якого комп'ютерного пристрою. Існує багато типів мікропроцесорів, але вони вирішують одні й самі завдання. Сьогодні ми поговоримо про те, як процесор працює та які завдання він виконує. На перший погляд, все це видається очевидним. Але багатьом користувачам було б цікаво поглибити свої знання про найважливіший компонент, що забезпечує роботу комп'ютера. Ми дізнаємося про те, як технологія, яка базується на простій цифровій логіці, дозволяє вашому комп'ютеру не тільки вирішувати математичні завдання, а й бути розважальним центром. Як всього дві цифри — одиниця та нуль — перетворюються на барвисті ігри та фільми? Це питання багато хто неодноразово ставив собі і буде раді отримати на нього відповідь. Адже навіть в основі нещодавно нами процесора AMD Jaguar, на якому базуються новітні ігрові приставки, лежить та сама давня логіка.

В англомовній літературі мікропроцесор часто називають CPU (central processing unit, [єдиним] модулем центрального процесора). Причина такої назви полягає в тому, що сучасний процесор є єдиним чіпом. Перший мікропроцесор в історії людства був створений корпорацією Intel у далекому 1971 році.

Роль Intel історія мікропроцесорної промисловості


Йдеться про модель Intel 4004. Потужним він не був і вмів виконувати лише дії додавання та віднімання. Одночасно він міг обробляти лише чотири біти інформації (тобто був 4-бітним). Але свого часу його поява стала значною подією. Адже весь процесор помістився в одному чипі. До появи Intel 4004 комп'ютери базувалися на цілому наборі чіпів або дискретних компонентів (транзисторів). Мікропроцесор 4004 ліг в основу одного з перших портативних калькуляторів.

Першим мікропроцесором для домашніх комп'ютерів став представлений в 1974 Intel 8080. Вся обчислювальна потужність 8-бітного комп'ютера містилася в одному чіпі. Але по-справжньому велике значення мав анонс процесора Intel 8088. Він з'явився в 1979 і з 1981 став використовуватися в перших масових персональних комп'ютерах IBM PC.

Далі процесори почали розвиватися та обростати потужністю. Кожен, хто хоч трохи знайомий з історією мікропроцесорної індустрії, пам'ятає, що на зміну 8088 прийшли 80286. Потім настала черга 80386, за яким йшли 80486. Потім були кілька поколінь «Пентіумів»: Pentium, Pentium II, III і Pentium4. «інтелівські» процесори, засновані на базовій конструкції 8088. Вони мали зворотну сумісність. Це означає, що Pentium 4 міг обробити будь-який фрагмент коду для 8088, але робив це зі швидкістю, що зросла приблизно п'ять тисяч разів. З того часу минуло не так багато років, але встигли змінитись ще кілька поколінь мікропроцесорів.


З 2004 року Intel почала пропонувати багатоядерні процесори. Кількість транзисторів, що використовуються в них, зросла на мільйони. Але навіть зараз процесор підпорядковується тим загальним правилам, створеним для ранніх чіпів. У таблиці відображено історію мікропроцесорів Intel до 2004 року (включно). Ми зробимо деякі пояснення до того, що означають відображені у ній показники:
  • Name (Назва). Модель процесора
  • Date (Дата). Рік, коли процесор був вперше представлений. Багато процесорів представляли багаторазово, щоразу, коли підвищувалася їхня тактова частота. Таким чином, чергова модифікація чіпа могла бути повторно анонсована навіть за кілька років після появи на ринку першої його версії.
  • Transistors (Кількість транзисторів). Кількість транзисторів у чипі. Ви можете бачити, що цей показник неухильно зростав
  • Microns (Ширина у мікронах). Один мікрон дорівнює одній мільйонній частці метра. Величина цього показника визначається товщиною найтоншого дроту в чіпі. Для порівняння, товщина людського волосся становить 100 мікрон.
  • Clock speed (Тактова частота). Максимальна швидкість роботи процесора
  • Data Width. "Бітність" арифметико-логічного пристрою процесора (АЛУ, ALU). 8-бітове АЛУ може складати, віднімати, множити та виконувати інші дії над двома 8-бітними числами. 32-бітове АЛУ може працювати з 32-бітними числами. Щоб скласти два 32-бітові числа, восьмибітному АЛУ необхідно виконати чотири інструкції. 32-бітове АЛУ впорається із цим завданням за одну інструкцію. У багатьох (але не у всіх) випадках ширина зовнішньої шини даних збігається з «бітністю» АЛП. Процесор 8088 мав 16-бітну АЛУ, але 8-бітну шину. Для пізніх «Пентіумів» була характерна ситуація, коли шина була вже 64-бітною, а АЛУ, як і раніше, залишалося 32-бітовим.
  • MIPS (Мільйонів інструкцій за секунду). Дозволяє приблизно оцінити продуктивність процесора. Сучасні виконують настільки багато різних завдань, що цей показник втратив своє первісне значення і може використовуватися в основному для порівняння обчислювальної потужності кількох процесорів (як у даній таблиці)

Існує безпосередній зв'язок між тактовою частотою, а також кількістю транзисторів та кількістю операцій, що виконуються процесором за секунду. Наприклад, тактова частота процесора 8088 досягала 5 МГЦ, а продуктивність: лише 0,33 мільйона операцій на секунду. Тобто виконання однієї інструкції потрібно близько 15 тактів процесора. 2004 року процесори вже могли виконувати по дві інструкції за один такт. Це покращення було забезпечено збільшенням кількості процесорів у чіпі.

Чіп також називають інтегральною мікросхемою (або просто мікросхемою). Найчастіше це маленька і тонка кремнієва платівка, в яку вдруковані транзистори. Чіп, сторона якого досягає двох з половиною сантиметрів, може містити десятки мільйонів транзисторів. Найпростіші процесори можуть бути квадратиками зі стороною всього кілька міліметрів. І цього розміру достатньо кількох тисяч транзисторів.

Логіка мікропроцесора


Щоб зрозуміти, як працює мікропроцесор, слід вивчити логіку, де він заснований, і навіть познайомитися з мовою асемблера. Це рідна мова мікропроцесора.

Мікропроцесор здатний виконувати певний набір машинних вказівок (команд). Оперуючи цими командами, процесор виконує три основні завдання:

  • За допомогою свого арифметико-логічного пристрою процесор виконує математичні дії: додавання, віднімання, множення і поділ. Сучасні мікропроцесори повністю підтримують операції з плаваючою точкою (за допомогою спеціального арифметичного процесора операцій із плаваючою точкою)
  • Мікропроцесор здатний переміщати дані з одного типу пам'яті до іншого
  • Мікропроцесор має здатність приймати рішення і, на підставі прийнятого ним рішення, перестрибувати, тобто перемикатися на виконання нового набору команд

Мікропроцесор містить:

  • Address bus (адресну шину). Ширина цієї шини може становити 8, 16 або 32 біти. Вона займається відправкою адреси на згадку
  • Data bus (шина даних): шириною 8, 16, 32 або 64 біти. Ця шина може надсилати дані в пам'ять або приймати їх із пам'яті. Коли говорять про «бітність» процесора, йдеться про ширину шини даних.
  • Канали RD (read, читання) та WR (write, записи), що забезпечують взаємодію з пам'яттю
  • Clock line (шина синхронізуючих імпульсів), що забезпечує такти процесора
  • Reset line (шина стирання, шина скидання), що обнулює значення лічильника команд і перезапускає виконання інструкцій

Оскільки інформація досить складна, виходитимемо з того, що ширина обох шин - і адресної та шини даних - складає всього 8 біт. І коротко розглянемо компоненти цього порівняно простого мікропроцесора:

  • Регістри A, B та C є логічними мікросхемами, що використовуються для проміжного зберігання даних
  • Address latch (засувка адреси) подібна до регістрів A, B і C
  • Лічильник команд є логічною мікросхемою (засувкою), здатною прирощувати значення на одиницю за один крок (якщо їм отримано відповідну команду) та обнулювати значення (за умови отримання відповідної команди)
  • ALU (арифметико-логічний пристрій) може здійснювати між 8-бітними числами дії додавання, віднімання, множення та поділу або виступати в ролі звичайного суматора
  • Test register (тестовий регістр) є спеціальною клямкою, яка зберігає результати операцій порівняння, що виробляються АЛУ. Зазвичай АЛУ порівнює два числа і визначає, чи рівні вони або одне з них більше за інше. Тестовий регістр здатний також зберігати біт перенесення останньої дії суматора. Він зберігає ці значення триггерной схемою. Надалі ці значення можуть використовуватися дешифратором команд прийняття рішень
  • Шість блоків на діаграмі позначені як «3-State». Це буфери сортування. Багато джерел виводу можуть бути з'єднані з проводом, але буфер сортування дозволяє тільки одному з них (одночасно) передавати значення: «0» або «1». Таким чином, буфер сортування вміє пропускати значення або перекривати джерелу виводу можливість передавати дані.
  • Регістр команд (instruction register) та дешифратор команд (instruction decoder) тримають усі вищеперелічені компоненти під контролем

На цій діаграмі не відображені лінії управління дешифратора команд, які можна виразити у вигляді наступних наказів:

  • «Регістру A прийняти значення, що надходить зараз від шини даних»
  • «Регістру B прийняти значення, що надходить зараз від шини даних»
  • "Регістру C прийняти значення, що надходить зараз від арифметико-логічного пристрою"
  • «Регістру лічильника команд прийняти значення, що надходить зараз від шини даних»
  • «Адресному регістру прийняти значення, що надходить зараз від шини даних»
  • «Регістру команд прийняти значення, що надходить зараз від шини даних»
  • «Лічильнику команд збільшити значення [на одиницю]»
  • «Лічильнику команд обнулитися»
  • «Активувати один із шести буферів сортування» (шість окремих ліній управління)
  • «Повідомити арифметико-логічний пристрій, яку операцію йому виконувати»
  • «Тестовий регістр прийняти тестові біти з АЛУ»
  • "Активувати RD (канал читання)"
  • "Активувати WR (канал запису)"

У дешифратор команд надходять біти даних із тестового регістру, каналу синхронізації, і навіть з регістру команд. Якщо максимально спростити опис завдань дешифратора інструкцій, можна сказати, що саме цей модуль «підказує» процесору, що необхідно зробити в даний момент.

Пам'ять мікропроцесора


Знайомство з , що стосуються комп'ютерної пам'яті та її ієрархії допоможуть краще зрозуміти зміст цього розділу.

Вище ми писали про шини (адресної та даних), а також про канали читання (RD) та записи (WR). Ці шини і канали з'єднані з пам'яттю: оперативною (ОЗУ, RAM) і постійним пристроєм, що запам'ятовує (ПЗУ, ROM). У прикладі розглядається мікропроцесор, ширина кожної з шин якого становить 8 біт. Це означає, що він здатний виконувати адресацію 256 байт (два у восьмому ступені). Одночасно може зчитувати з пам'яті чи записувати у ній 8 біт даних. Припустимо, що цей простий мікропроцесор має 128 байт ПЗУ (починаючи з адреси 0) або 128 байт оперативної пам'яті (починаючи з адреси 128).

Модуль постійної пам'яті містить певний заздалегідь встановлений постійний набір байт. Адресна шина запитує ПЗУ певний байт, який слід передати шині даних. Коли канал читання (RD) змінює свій стан, модуль ПЗП надає запитаний байт шині даних. Тобто в цьому випадку можливе лише читання даних.

З оперативної пам'яті процесор може як зчитувати інформацію, він здатний також записувати у ній дані. Залежно від того, чи читання або запис здійснюється, сигнал надходить або через канал читання (RD), або через канал запису (WR). На жаль, оперативна пам'ять енергозалежна. При відключенні живлення вона втрачає всі розміщені у ній дані. З цієї причини комп'ютеру необхідний енергонезалежний постійний пристрій.

Більше того, теоретично комп'ютер може обійтися без оперативної пам'яті. Багато мікроконтролерів дозволяють розміщувати необхідні байти даних безпосередньо в чіп процесора. Але без ПЗУ обійтися неможливо. У персональних комп'ютерах ПЗУ називається базовою системою введення та виведення (БСВВ, BIOS, Basic Input/Output System). Свою роботу при запуску мікропроцесор починає з виконання команд, знайдених ним у BIOS.

Команди BIOS виконують тестування апаратного забезпечення комп'ютера, а потім звертаються до жорсткого диска і вибирають завантажувальний сектор. Цей сектор завантаження є окремою невеликою програмою, яку BIOS спочатку зчитує з диска, а потім розміщує в оперативній пам'яті. Після цього мікропроцесор починає виконувати команди розташованого в ОЗП завантажувального сектора. Програма завантажувального сектора повідомляє мікропроцесору про те, які дані (призначені для подальшого виконання процесором) слід перемістити з жорсткого диска в оперативну пам'ять. Саме так відбувається процес завантаження процесором операційної системи.

Інструкції мікропроцесора


Навіть найпростіший мікропроцесор здатний обробляти досить великий набір інструкцій. Набір інструкцій є свого роду шаблон. Кожна з цих команд, що завантажуються в регістр, має своє значення. Людям непросто запам'ятати послідовність бітів, тому кожна інструкція описується як короткого слова, кожне з яких відбиває певну команду. Ці слова становлять мову асемблера процесора. Асемблер перекладає ці слова на зрозумілу процесору мову двійкових кодів.

Наведемо список слів-команд мови асемблера для умовного простого процесора, який ми розглядаємо як приклад до нашої розповіді:

  • LOADA mem - Завантажити (load) регістр A з деякої адреси пам'яті
  • LOADB mem - Завантажити (load) регістр B з деякої адреси пам'яті
  • CONB con — Завантажити постійне значення (constant value) у регістр B
  • SAVEB mem — Зберегти (save) значення регістру B у пам'яті за певною адресою
  • SAVEC mem — Зберегти (save) значення регістру C у пам'яті за певною адресою
  • ADD - Скласти (add) значення регістрів A і B. Результат дії зберегти в регістрі C
  • SUB — Відняти значення регістру B від значення регістру A. Результат дії зберегти в регістрі C
  • MUL - Перемножити (multiply) значення регістрів A і B. Результат дії зберегти в регістрі C
  • DIV — Розділити значення регістру A на значення регістра B. Результат дії зберегти в регістрі C
  • COM - Порівняти (compare) значення регістрів A і B. Результат передати в тестовий регістр
  • JUMP addr — Перестрибнути (jump) до вказаної адреси
  • JEQ addr — Якщо виконується умова рівності значень двох регістрів, перестрибнути (jump) до вказаної адреси
  • JNEQ addr — Якщо умова рівності значень двох регістрів не виконується, перестрибнути (jump) до вказаної адреси
  • JG addr — Якщо більше значення, перестрибнути (jump) до вказаної адреси
  • JGE addr — Якщо значення більше або рівне, перестрибнути (jump) до вказаної адреси
  • JL addr — Якщо менше значення, перестрибнути (jump) до вказаної адреси
  • JLE addr — Якщо значення менше або рівне, перестрибнути (jump) до вказаної адреси
  • STOP — Зупинити (stop) виконання

Англійські слова, що позначають дії, що виконуються, в дужках наведені неспроста. Так ми можемо бачити, що мова асемблера (як і багато інших мов програмування) заснована на англійській мові, тобто на звичному засобі спілкування тих людей, які створювали цифрові технології.

Робота мікропроцесора на прикладі обчислення факторіалу


Розглянемо роботу мікропроцесора на конкретному прикладі виконання ним простої програми, яка обчислює факторіал від числа "5". Спочатку вирішимо це завдання «в зошиті»:

факторіал від 5=5! = 5 * 4 * 3 * 2 * 1 = 120

На мові програмування C цей фрагмент коду, що виконує дане обчислення, буде виглядати так:

A=1;f=1;while (a

Коли ця програма завершить свою роботу, змінна f міститиме значення факторіалу від п'яти.

Компілятор C транслює (тобто перекладає) цей код набір інструкцій мови асемблера. У аналізованому нами процесорі оперативна пам'ять починається з адреси 128, а постійна пам'ять (яка містить мову асемблера) починається з адреси 0. Отже, мовою даного процесора ця програма виглядатиме так:

// Припустимо, що a за адресою 128 // Припустимо, що F за адресою 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 to 175 CONB 56 COM7 JG 178 LOADA 129 // f=f*a;9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 // a=a+1;13 CONB 114

Тепер виникає наступне питання: а як же всі ці команди виглядають у постійній пам'яті? Кожна з цих інструкцій має бути подана у вигляді двійкового числа. Щоб спростити розуміння матеріалу, припустимо, кожна з команд мови асемблера аналізованого нами процесора має унікальний номер:

  • LOADA - 1
  • LOADB - 2
  • CONB - 3
  • SAVEB - 4
  • SAVEC mem - 5
  • ADD - 6
  • SUB - 7
  • MUL - 8
  • DIV - 9
  • COM - 10
  • JUMP addr - 11
  • JEQ addr - 12
  • JNEQ addr - 13
  • JG addr - 14
  • JGE addr - 15
  • JL addr - 16
  • JLE addr - 17
  • STOP - 18

// Припустимо, що a за адресою 128// Припустимо, що F за адресою 129Addr машинна команда/значення0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 1298 1 1289 12810 3 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 //2AV 2 12824 3 // CONB 125 126 6 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Як ви помітили, сім рядків коду на мові C були перетворені на 18 рядків на мові асемблера. Вони зайняли у ПЗУ 32 байти.

Декодування


Розмову про декодування доведеться розпочати з розгляду філологічних питань. На жаль, далеко не всі комп'ютерні терміни мають однозначні відповідності у російській мові. Переклад термінології найчастіше йшов стихійно, а тому той самий англійський термін може перекладатися російською кількома варіантами. Так і сталося з найважливішою складовою мікропроцесорної логіки «instruction decoder». Комп'ютерні фахівці називають його дешифратором команд і декодером інструкцій. Жоден із цих варіантів назви неможливо назвати ні більш, ні менш «правильним», ніж інший.

Дешифратор команд необхідний у тому, щоб перевести кожен машинний код у набір сигналів, які у дію різні компоненти мікропроцесора. Якщо спростити суть його дій, можна сказати, що він узгодить «софт» і «залізо».

Розглянемо роботу дешифратора команд з прикладу інструкції ADD, виконує дію складання:

  • Протягом першого циклу тактової частоти процесора відбувається завантаження команди. На цьому етапі дешифратору команд необхідно: - активувати буфер сортування для лічильника команд; активувати канал читання (РД); активувати засувку буфера сортування на пропуск вхідних даних до регістру команд
  • Протягом другого циклу тактової частоти процесора команда ADD декодується. На цьому етапі арифметико-логічний пристрій виконує додавання і передає значення регістру C
  • Протягом третього циклу тактової частоти процесора лічильник команд збільшує своє значення на одиницю (теоретично, ця дія перетинається з тим, що відбувалося під час другого циклу)

Кожна команда може бути представлена ​​у вигляді набору операцій, що послідовно виконуються, які в певному порядку маніпулюють компонентами мікропроцесора. Тобто програмні інструкції ведуть до цілком фізичних змін: наприклад, зміни положення засувки. Деякі інструкції можуть вимагати виконання двох або трьох тактових циклів процесора. Іншим може знадобитися навіть п'ять чи шість циклів.

Мікропроцесори: продуктивність та тенденції


Кількість транзисторів у процесорі є важливим фактором, що впливає на його продуктивність. Як було показано раніше, в процесорі 8088 виконання однієї інструкції вимагалося 15 циклів тактової частоти. А щоб виконати одну 16-бітну операцію, йшло зовсім близько 80 циклів. Так було влаштовано помножувач АЛУ цього процесора. Чим більше транзисторів і чим потужніший помножувач АЛУ, тим більше встигає зробити процесор за один свій такт.

Багато транзистори підтримують технологію конвеєризації. У межах конвеєрної архітектури відбувається часткове накладення виконуваних інструкцій друг на друга. Інструкція може вимагати на виконання тих же п'яти циклів, але якщо процесором одночасно обробляються п'ять команд (на різних етапах завершеності), то в середньому на виконання однієї інструкції знадобиться один цикл тактової частоти процесора.

Багато сучасних процесорах дешифратор команд не один. І кожен із них підтримує конвеєризацію. Це дозволяє виконувати більше інструкції за один такт процесора. Для реалізації цієї технології потрібно безліч транзисторів.

64-бітові процесори


Хоча масового поширення 64-бітові процесори отримали лише кілька років тому, вони існують порівняно давно: з 1992 року. І Intel, і AMD пропонують нині такі процесори. 64-бітним можна вважати такий процесор, який володіє 64-бітним арифметико-логічним пристроєм (АЛУ), 64-бітними регістрами та 64-бітними шинами.

Основна причина, через яку процесорам потрібна 64-бітність, полягає в тому, що дана архітектура розширює адресний простір. 32-бітові процесори можуть отримувати доступ тільки до двох або чотирьох гігабайт оперативної пам'яті. Колись ці цифри здавалися гігантськими, але минули роки і сьогодні такої пам'яті вже нікого не здивуєш. Декілька років тому пам'ять звичайного комп'ютера становила 256 або 512 мегабайт. У ті часи чотиригігабайтний ліміт заважав лише серверам та машинам, на яких працюють великі бази даних.

Але дуже швидко виявилося, що навіть звичайним користувачам часом не вистачає ні двох, ні чотирьох гігабайт оперативної пам'яті. 64-бітових процесорів це прикре обмеження не стосується. Доступний їм адресний простір у наші дні здається нескінченним: два в шістдесят четвертому ступені байт, тобто близько мільярда гігабайт. В найближчому майбутньому такої гігантської оперативної пам'яті не передбачається.

64-бітна адресна шина, а також широкі та високошвидкісні шини даних відповідних материнських плат, дозволяють 64-бітним комп'ютерам збільшити швидкість введення та виведення даних у процесі взаємодії з такими пристроями, як жорсткий диск та відеокарта. Ці нові можливості значно збільшують продуктивність сучасних обчислювальних машин.

Але далеко не всі користувачі відчують переваги 64-розрядної архітектури. Вона необхідна насамперед тим, хто займається редагуванням відео та фотографій, а також працює з різними великими картинками. 64-бітові комп'ютери гідно оцінені поціновувачами комп'ютерних ігор. Але ті користувачі, які за допомогою комп'ютера просто спілкуються в соціальних мережах і блукають веб-просторами та редагують текстові файли ніяких переваг цих процесорів, швидше за все, просто не відчують.

За матеріалами computer.howstuffworks.com

Зараз повно інформації в інтернеті по темі процесорів, можна знайти купу статей про те як він працює, де в основному згадуються регістри, такти, переривання та інше... Але людині не знайомій з усіма цими термінами і поняттями досить важко ось так "з літу" вникнути в розуміння процесу, а починати треба з малого - а саме з елементарного розуміння як влаштований процесор та з яких основних частин він складається.

Що ж виявиться всередині мікропроцесора, якщо його розібрати:

цифрою 1 позначається металева поверхня (кришка) мікропроцесора, що служить для відведення тепла та захисту від механічних пошкоджень того, що знаходиться за цією кришкою (тобто всередині самого процесора).

Під номером 2 - знаходиться сам кристал, що є найважливішою і дорогою у виготовленні частиною мікропроцесора. Саме завдяки цьому кристалу відбуваються всі обчислення (а це і є найголовніша функція процесора) і чим він складніший, чим досконаліший – тим потужнішим виходить процесор і тим дорожче відповідно. Кристал виготовляється із кремнію. Насправді процес виготовлення дуже складний і містить у собі десятки кроків, докладніше у цьому відео:

Цифра 3 - спеціальна текстолітова підкладка, до якої кріпляться решта процесора, крім того вона грає роль контактного майданчика - на її зворотному боці є велика кількість золотистих "точок" - це контакти (на малюнку їх трохи видно). Завдяки контактному майданчику (підкладці) забезпечується тісна взаємодія з кристалом, бо безпосередньо хоч якось впливати на кристал неможливо.

Кришка (1) кріпиться до підкладки (3) за допомогою клею-герметика, стійкого до високих температур. Між кристалом (2) і кришкою немає повітряного зазору, його місце займає термопаста, при застиганні з неї виходить "місток" між кристалом процесора та кришкою, завдяки чому забезпечується дуже добрий відтік тепла.

Кристал з'єднується з підкладкою за допомогою паяння та герметика, контакти підкладки з'єднуються з контактами кристала. На цьому малюнку наочно показано, як з'єднуються контакти кристала з контактами підкладки за допомогою дуже тонких проводків (на фото 170-кратне збільшення):

Взагалі пристрій процесорів різних виробників і навіть моделей одного виробника може сильно відрізнятися. Однак принципова схема роботи залишається незмінною - у всіх є контактна підкладка, кристал (або кілька, розташованих в одному корпусі) та металева кришка для відведення тепла.

Так наприклад виглядає контактна підкладка процесора Intel Pentium 4 (процесор перевернутий):

Форма контактів та структура їх розташування залежить від процесора та материнської плати комп'ютера (сокети мають збігатися). Наприклад, на малюнку трохи вище контакти у процесора без "штирків", оскільки штирі знаходяться прямо в сокеті материнської плати.

А буває інша ситуація, де "штирі" контактів стирчать прямо із контактної підкладки. Ця особливість характерна в основному для процесорів AMD:

Як вже згадувалося вище, пристрій різних моделей процесорів одного виробника може відрізнятися, перед нами яскравий приклад - чотириядерний процесор Intel Core 2 Quad, який по суті являє собою 2 двоядерних процесора лінійки core 2 duo, поєднаних в одному корпусі:

Важливо! Кількість кристалів усередині процесора і кількість ядер процесора - не те саме.

У сучасних моделях процесорів Intel вміщується одразу 2 кристали (чіпа). Другий чіп - графічне ядро ​​процесора, по суті відіграє роль вбудованої в процесор відеокарти, тобто навіть якщо в системі відсутня, графічне ядро ​​візьме на себе роль відеокарти, причому досить потужної (у деяких моделях процесорів обчислювальна потужність графічних ядер дозволяє грати в сучасні ігри на середніх налаштуваннях графіки).

От і все пристрій центрального мікропроцесора, коротко звичайно ж.

Серцем персонального комп'ютера є процесор. Він є електронним цифровим пристроєм, який може працювати за заданою програмою.

Розглянемо пристрій комп'ютера. Спочатку розшифруємо окремо прикметники «електронне» та «цифрове».

Прикметник "електронне" - означає, що процесор комп'ютера працює на електричній енергії і всі сигнали, які обробляються цим пристроєм, є електричними. Разом з тим в радіоелектроніці електронні пристрої поділяються на 2 великі класи: аналогові та цифрові. Прикметник «цифрове» означає, що процесор комп'ютера відноситься до класу цифрових, а не аналогових пристроїв.

Згадані аналогові пристрої переважали серед радіоелектронної апаратури 20-30 років тому. А з'явилися вони тоді, коли радіоінженери навчилися записувати та передавати звук та зображення у вигляді аналогових сигналів. Це були радіоприймачі, телевізори, магнітофони тощо.

Аналогові пристрої поступилися пальмою першості лише наприкінці минулого століття, коли розвиток цифрових пристроїв призвело до того, що за допомогою цифрових кодів навчилися записувати та передавати будь-яку інформацію, включаючи вже згадані звуки та зображення.

Цифрові сигнали на відміну від аналогових в незначній мірі схильні до перешкод і без спотворення передаються на відстані, вони краще записуються, зберігаються і не «псуються» з часом.

Процесор комп'ютера є одним із найскладніших пристроїв серед цифрових електронних пристроїв. Це своєрідний апофеоз розвитку цифрової техніки.

Зовні він є кремнієвою пластиною, змонтованою в корпусі, що має безліч електричних висновків для підключення до електроживлення та інших пристроїв комп'ютера.

За те, що процесор робиться на кремнієвих пластинах, на жаргоні комп'ютерників його іноді називають камінь, так як кремній є міцним матеріалом.

На цю пластину шляхом дуже точного напилення речовини (точність вимірюється ангстремами) у вакуумі і за дотримання ідеальної чистоти виробництва відтворюють найскладнішу і надзвичайно мініатюрну за своїми розмірами електричну схему, що складається з десятків і сотень тисяч дрібних елементів (в основному, транзисторів), з'єднаних між собою. спеціальним чином.

Виробництво таких пристроїв настільки високотехнологічним, що його змогли освоїти тільки країни з найрозвиненішою економікою. Цікаво, що з виробництві процесорів не вимірюють шлюб, як і прийнято майже переважають у всіх галузях промисловості та виробництва, а вимірюють так званий відсоток виходу придатних виробів, оскільки зовсім небагато заготівлі процесорів зрештою стають працездатними пристроями.

Якісно вироблені кремнієві пластинки поміщають у корпус з висновками та постачають пристроями охолодження (радіатор і вентилятор), оскільки сотні тисяч мініатюрних транзисторів при своїй роботі виділяють неабияку кількість тепла.

Якщо подивитися на внутрішню логічну структуру процесора комп'ютера, то він є сукупністю з'єднаних між собою пристроїв:

- арифметико-логічний пристрій (АЛУ), в якому, власне, і здійснюється перетворення інформації,

– пристрій управління (УУ), який призначений для управління арифметико-логічним пристроєм,

– та регістри (комірки) пам'яті, в яких зберігаються вхідні дані, проміжні дані та результуючі дані.

Команди, призначені керувати роботою процесора, потрапляють з оперативної пам'яті пристрій управління. Цей пристрій керує роботою арифметико-логічного пристрою відповідно до отриманих команд.

У свою чергу, АЛУ відповідно до отриманих з УУ команд, здійснює

  • введення інформації з регістрів,
  • обробку інформації та
  • запис обробленої інформації у регістри.

Регістри процесора можуть обмінюватися інформацією з осередками оперативної пам'яті (теж основі команд АЛУ). Тому зрештою процесор комп'ютера

  • здійснює обробку даних, що одержуються з оперативної пам'яті,
  • а оброблені дані також розміщує в оперативній пам'яті.

Наведений короткий опис роботи процесора комп'ютера ілюструє, що обробка даних процесором є послідовністю дуже «дрібних» кроків:

  • зчитування даних з оперативної пам'яті в регістри процесора,
  • обробка цих даних та
  • зворотний запис даних з регістрів процесора до осередків оперативної пам'яті.

Але компенсацією за це є найвища швидкість обчислень, сотні тисяч та мільйони таких «маленьких» операцій щомиті. І, відповідно, забезпечується висока швидкість обробки інформації, що робить комп'ютер незамінним помічником для роботи, навчання, відпочинку, розваг.

Інструмент простіше, ніж машина. Найчастіше інструментом працюють руками, а машину приводить у дію парова сила чи тварина.

Чарльз Беббідж

Комп'ютер також можна назвати машиною, тільки замість парової сили тут електрика. Але програмування зробило комп'ютер таким самим простим, як будь-який інструмент.

Процесор - це серце/мозок будь-якого комп'ютера. Його основне призначення - арифметичні та логічні операції, і перш ніж поринути в нетрі процесора, потрібно розібратися в його основних компонентах та принципах їхньої роботи.

Два основні компоненти процесора

Пристрій керування

Пристрій управління (УУ) допомагає процесору контролювати та виконувати інструкції. УУ повідомляє компоненти, що саме потрібно робити. Відповідно до інструкцій він координує роботу з іншими частинами комп'ютера, включаючи другий основний компонент - арифметико-логічний пристрій (АЛП). Всі інструкції спочатку надходять саме на пристрій керування.

Існує два типи реалізації УУ:

  • УУ на жорсткій логіці(англ. Hardwired control units). Характер роботи визначається внутрішнім електричним будовою - пристроєм друкованої плати чи кристала. Відповідно модифікація такого УУ без фізичного втручання неможлива.
  • УУ з мікропрограмним керуванням(Англ. Microprogrammable control units). Може бути запрограмований для тих чи інших цілей. Програмна частина зберігається у пам'яті УУ.

УУ на жорсткій логіці швидше, але УУ з мікропрограмним управлінням має більш гнучку функціональність.

Арифметико-логічний пристрій

Цей пристрій, як не дивно, виконує всі арифметичні та логічні операції, наприклад додавання, віднімання, логічне АБО і т. п. АЛУ складається з логічних елементів, які виконують ці операції.

Більшість логічних елементів мають два входи та один вихід.

Нижче наведена схема напівсуматора, у якої два входи та два виходи. A та B тут є входами, S – виходом, C – переносом (у старший розряд).

Схема арифметичного напівсуматора

Зберігання інформації - регістри та пам'ять

Як говорилося раніше, процесор виконує команди, що надходять на нього. Команди здебільшого працюють із даними, які можуть бути проміжними, вхідними чи вихідними. Всі ці дані разом з інструкціями зберігаються в регістрах та пам'яті.

Реєстри

Регістр - мінімальний осередок пам'яті даних. Регістри складаються з тригерів (англ. latches/flip-flops). Тригери, своєю чергою, складаються з логічних елементів і можуть зберігати у собі 1 біт інформації.

Прим. перев. Тригери можуть бути синхронні та асинхронні. Асинхронні можуть змінювати свій стан у будь-який момент, а синхронні лише під час позитивного/негативного перепаду на вході синхронізації.

За функціональним призначенням тригери поділяються на кілька груп:

  • RS-тригер: зберігає свій стан при нульових рівнях на обох входах і змінює його під час встановлення одиниці на одному з входів (Reset/Set - Скинути/Встановити).
  • JK-тригер: ідентичний RS-тригеру за винятком того, що при подачі одиниць відразу на два входи тригер змінює свій стан на протилежний (лічильний режим).
  • T-тригер: змінює свій стан протилежне при кожному такті з його єдиному вході.
  • D-тригер: запам'ятовує стан на вході під час синхронізації. Асинхронні D-тригери не мають сенсу.

Для зберігання проміжних даних ОЗУ не підходить, оскільки це уповільнить роботу процесора. Проміжні дані надсилаються в регістри по шині. Вони можуть зберігатися команди, вихідні дані і навіть адреси осередків пам'яті.

Принцип дії RS-тригера

Пам'ять (ОЗУ)

ОЗУ (оперативний пристрій, що запам'ятовує, англ. RAM) - це велика група цих самих регістрів, з'єднаних разом. Пам'ять такого сховища непостійна і дані звідти пропадають при відключенні живлення. ОЗУ приймає адресу комірки пам'яті, в яку потрібно помістити дані, самі дані та прапор запису/читання, який приводить у дію тригери.

Прим. перев. Оперативна пам'ять буває статичною та динамічною - SRAM і DRAM відповідно. У статичній пам'яті осередками є тригери, а динамічної - конденсатори. SRAM швидше, а DRAM дешевше.

Команди (інструкції)

Команди - це фактичні дії, які комп'ютер має виконувати. Вони бувають кількох типів:

  • Арифметичні: додавання, віднімання, множення і т.д.
  • Логічні: І (логічне множення/кон'юнкція), АБО (логічне підсумовування/диз'юнкція), заперечення і т.д.
  • Інформаційні: move , input , outptut , load та store .
  • Команди переходу: goto , if ... goto , call та return .
  • Команда зупинки: halt .

Прим. перев. Насправді всі арифметичні операції в АЛУ можуть бути створені на основі всього двох: додавання та зсув. Проте чим більше базових операцій підтримує АЛУ, тим швидше.

Інструкції надаються комп'ютером мовою асемблера або генеруються компілятором високорівневих мов.

У процесорі інструкції реалізуються на апаратному рівні. За один такт одноядерний процесор може виконати одну елементарну (базову) інструкцію.

Групу інструкцій прийнято називати набором команд (instruction set).

Тактування процесора

Швидкодія комп'ютера визначається тактовою частотою його процесора. Тактова частота - кількість тактів (відповідно та виконуваних команд) за секунду.

Частота нинішніх процесорів вимірюється у ГГц (Гігагерці). 1 ГГц = 10⁹ Гц - мільярд операцій на секунду.

Щоб зменшити час виконання програми, потрібно оптимізувати (зменшити) її, або збільшити тактову частоту. Частина процесорів має можливість збільшити частоту (розігнати процесор), проте такі дії фізично впливають на процесор і нерідко викликають перегрів і вихід з ладу.

Виконання інструкцій

Інструкції зберігаються у ОЗП у послідовному порядку. Для гіпотетичного процесора інструкція складається з коду операції та адреси пам'яті/реєстру. Усередині керуючого пристрою є два регістри інструкцій, в які завантажується код команди та адреса поточної команди, що виконується. Ще в процесорі є додаткові регістри, які зберігають у собі останні 4 біти виконаних інструкцій.

Нижче розглянуто приклад набору команд, що підсумовує два числа:

  1. LOAD_A 8 . Ця команда зберігає в ОЗУ дані, скажімо,<1100 1000>. Перші 4 біти – код операції. Саме він визначає інструкцію. Ці дані містяться в регістри інструкцій УУ. Команда декодується в інструкцію load_A - помістити дані 1000 (останні 4 біти команди) у регістр A .
  2. LOAD_B 2 . Ситуація, аналогічна до минулої. Тут міститься число 2 (0010) регістр B .
  3. ADD B A. Команда підсумовує два числа (точніше додає значення регістра B регістр A). УУ повідомляє АЛУ, що потрібно виконати операцію підсумовування та помістити результат назад у регістр A .
  4. STORE_A 23 . Зберігаємо значення регістру A в комірку пам'яті з адресою 23 .

Ось такі операції потрібні, щоби скласти два числа.

Шина

Усі дані між процесором, регістрами, пам'яттю та I/O-пристроями (пристроями введення-виведення) передаються по шинах. Щоб завантажити в пам'ять щойно оброблені дані, процесор поміщає адресу в шину адреси та дані в шину даних. Потім необхідно дати дозвіл на запис на шині управління.

Кеш

Процесор має механізм збереження інструкцій в кеш. Як ми з'ясували раніше, за секунду процесор може виконати мільярди інструкцій. Тому якби кожна інструкція зберігалася в ОЗУ, її вилучення звідти займало б більше часу, ніж її обробка. Тому для прискорення роботи процесор зберігає частину інструкцій та даних у кеші.

Якщо дані в кеші та пам'яті не збігаються, то вони позначаються брудними бітами (dirty bit).

Потік інструкцій

Сучасні процесори можуть паралельно обробляти кілька команд. Поки одна інструкція знаходиться на стадії декодування, процесор може встигнути отримати іншу інструкцію.

Однак таке рішення підходить тільки для тих інструкцій, які не залежать одна від одної.

Якщо багатоядерний процесор, це означає, що фактично в ньому знаходяться кілька окремих процесорів з деякими загальними ресурсами, наприклад кешем.