Як це працює: мікропроцесор

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

Мікропроцесор- також відомий як процесор або центральний блок обробки – це обчислювальний двигун, який виготовлений на одному кристалі. Першим мікропроцесором був Intel 4004, він з'явився 1971 року і був настільки потужним. Він міг складати і віднімати, і це лише 4 біти за один раз. Дивним процесором був тому, що був виконаний на одному чіпі. Ви запитаєте чому? А я відповім: інженери тоді виробляли процесори або з кількох чіпів або з дискретних компонентів (транзистори використовувалися в окремих корпусах).

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

Прогрес у виробництві мікропроцесорів: Intel

Першим мікропроцесором, який згодом став серцем простого домашнього комп'ютера, був Intel 8080 - повний 8-розрядний комп'ютер на одному чіпі, що з'явився в 1974 році. Перший мікропроцесор спричинив реальний сплеск на ринку. Пізніше у 1979 році була випущена нова модель - Intel 8088. Якщо ви знайомі з ринком ПК та його історією, то знаєте, що ринок ПК переїхав від Intel 8088 до Intel 80286, а той до Intel 80386 та Intel 80486, а потім до Pentium, Pentium II, Pentium III та Pentium 4. Всі ці мікропроцесори зроблені Intel, і всі вони є покращеннями базової конструкції Intel 8088. Pentium 4 може виконати будь-який код, але робить він це в 5000 разів швидше.

У 2004 році Intel представила мікропроцесори з кількома ядрами та мільйонною кількістю транзисторів, але навіть ці мікропроцесори дотримувалися загальних правил, що й раніше виготовлені чіпи. Додаткова інформація у таблиці:

  • Дата: є роком, коли процесор був вперше представлений Багато процесорів було випущено знову, але вже з вищими тактовими частотами, і це тривало багато років після оригінальної дати випуску
  • Транзистори: це кількість транзисторів на кристалі Ви можете бачити, що кількість транзисторів на одному кристалі неухильно зростає протягом багатьох років.
  • Мікрон: ширина мікронів найменшого дроту на чіпі. Для порівняння можу навести людське волосся, що має товщину близько 100 мкм. Оскільки розміри були дедалі меншими, число транзисторів зростало
  • Тактова частота: максимальна швидкість, яку чіп може розвинути. Про тактову частоту я розповім трохи пізніше
  • Ширина (шина) даних: є шириною АЛП (арифметико-логічний пристрій). 8-бітове АЛУ може додати, відняти, помножити і т. д. У багатьох випадках шина даних має ту ж ширину, як АЛУ, але не завжди. Intel 8088 був 16-бітним і мав 8-бітну шину, тоді як сучасні моделі Pentium 64-бітні.
  • MIPS: ця колонка в таблиці виступає за відображення кількості операцій за секунду. Є одиницею виміру для мікропроцесорів. Сучасні процесори можуть зробити стільки всяких штук, що сьогоднішні рейтинги, представлені в таблиці, втратить будь-який сенс. Зате ви можете відчути відносну потужність мікропроцесорів тих часів
З цієї таблиці видно, що, загалом, існує зв'язок між тактовою частотою і MIPS (кількістю операцій, що здійснюються в секунду). Максимальна тактова частота є функцією виробничого процесора. Існує також залежність між кількістю транзисторів та кількістю операцій на секунду. Наприклад, Intel 8088 з тактовою частотою 5 МГц (нині 2.5-3 ГГц) виконує лише 0.33 MIPS (близько однієї інструкції кожному за 15 такту). Сучасні процесори можуть часто виконувати дві інструкції за такт. Це підвищення безпосередньо пов'язане з числом транзисторів на чіпі, і я розповім про це теж далі.

Що таке чіп?

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

Як це працює


Intel Pentium 4


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

Мікропроцесор виконує колекцію машинних інструкцій, які повідомляють процесору, що робити. Грунтуючись на інструкціях, мікропроцесор робить три основні речі:

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

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

  • Шина адреси (8, 16 або 32 біти), яка надсилає звернення до пам'яті
  • Шина даних (8, 16 або 32 біта), яка передає дані на згадку або приймає дані від пам'яті
  • RD (read, читання) і WR (write, запис) повідомляють пам'яті, чи хочуть вони зробити установку або отримати адресоване місце розташування
  • Лінія годинника, яка дозволяє переглянути послідовність тактових імпульсів процесора
  • Лінія скидання, яка скидає лічильник команд до нуля та перезапускає виконання

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

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

Оперативна пам'ять виступає за пам'ять лише читання. Мікросхема постійної пам'яті запрограмована з постійними встановленими заданими байтами. Шинна адреса повідомляє чіпу оперативної пам'яті, який байт, дістатися і поміститися на шині даних. Коли лінія читання змінює свій стан, мікросхема постійної пам'яті представляє вибраний байт на шину даних.

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


RAM chip або чіп постійного пристрою (ПЗУ)


До речі, багато комп'ютерів містять кілька оперативної пам'яті. На персональному комп'ютері постійний пристрій називається BIOS (Basic Input/Output System). При запуску мікропроцесор починає виконувати інструкції, що він знаходить у BIOS. Інструкції BIOS, до речі, теж виконують свої ролі: виконують перевірку апаратних засобів, а потім вся інформація надходить на жорсткий диск, щоб створити завантажувальний сектор. Завантажувальний сектор - це невелика програма, і BIOS зберігає їх у пам'яті після прочитання з диска. Потім мікропроцесор починає виконувати інструкції завантажувального сектора оперативної пам'яті. Програма завантажувального сектора покаже мікропроцесору, що потрібно взяти з собою з жорсткого диска в оперативну пам'ять, а потім виконує все це і так далі. Це те, як мікропроцесор завантажує і виконує всю операційну систему.

Мікропроцесорні інструкції

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

Ось набір інструкцій мови асемблера:

  • LOADA mem- Завантажити в регістр з адресою пам'яті
  • LOADB mem- Завантажити в регістр B від адреси пам'яті
  • CONB mem- завантажити постійне значення в регістр B
  • SAVEB mem- зберегти регістр B на адресу пам'яті
  • SAVEC mem- Зберегти регістр C на адресу пам'яті
  • ADD- додати A і B і зберегти результат C
  • SUB- відняти A і B і зберегти результат C
  • MUL- помножити A і B і зберегти результат C
  • DIV- розділити A і B та зберегти результат у C
  • COM- порівняти A та B та зберегти результат у тесті
  • JUMP addr- перейти на адресу
  • JEQ addr- перейти, якщо рівно, для вирішення
  • JNEQ addr- перейти, якщо не одно, для вирішення
  • JG addr- перейти, якщо більше, для вирішення
  • JGE addr- перейти, якщо більше чи одно, для вирішення
  • JL addr- перейти, якщо менше, для вирішення
  • JLE addr- перейти, якщо менше чи одно, на вирішення
  • STOP- зупинити виконання
Мова асемблера
Компілятор C перекладає цей C-код мовою асемблера. Якщо припустити, що оперативна пам'ять починається з адреси 128 в цьому процесорі, і постійний пристрій (в якому міститься програма на мові асемблера) починається з адреси 0, то для нашого простого мікропроцесора асемблер може виглядати наступним чином:

// Assume is at address 128// Assume F is at address 1290 CONB 1 // a=1;1 SAVEB 1282 CONB 1 // f=1;3 SAVEB 1294 LOADA 128 // if a > 5 jump 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
Ці цифри будуть відомі як коди операцій. У постійному пристрої, що запам'ятовує, наша маленька програма буде виглядати наступним чином:

// Assume is at address 128// Assume F is at address 129Addr opcode/value0 3 // CONB 11 12 4 // SAVEB 1283 1284 3 // CONB 15 16 4 // SAVEB 1297 199 2 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 12922 1 // ADD27 5 // SAVEC 12828 12829 11 // JUMP 430 831 18 // STOP

Ви бачите, що 7 ліній C-коду стали 18 лініями асемблера, і це все стало 32 байтами в постійному пристрої.

Декодування
Інструкція декодування повинна перетворити кожен із кодів операцій на набір сигналів, які керуватимуть різними компонентами всередині мікропроцесора. Давайте візьмемо інструкції ADD як приклад і подивимося, що вона має зробити. Отже:

  • 1. У першому такті необхідно завантажити саму інструкцію, тому декодер потрібно: активувати трьома станами буфер для лічильника команд, активувати лінію читання (RD), активувати дані в трьох штатах буфера в регістрі команд
  • 2. У другому такті інструкція ADD декодується. Тут потрібно зробити зовсім небагато: встановити операцію арифметико-логічного устрою (АЛУ) в регістр C
  • 3. Під час третього такту програмний лічильник збільшується (теоретично це може перекриватися у другому такті)
Кожна інструкція може бути розбита у вигляді набору секвенованих операцій - таких, які ми щойно переглянули. Вони маніпулюють компонентами мікропроцесора у правильному порядку. Деякі вказівки, наприклад, інструкція ADD, може зайняти два-три такти. Інші можуть зайняти п'ять чи шість тактів.

Підійдемо до кінця

Кількість транзисторів має великий вплив на продуктивність процесора. Як можна помітити вище, типовий процесор Intel 8088 міг виконувати 15 циклів. Чим більше транзисторів, тим вища продуктивність – все просто. Багато транзисторів також допускає таку технологію, як конвеєрна обробка.

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

Всі ці тенденції дозволяють зростати кількості транзисторів, що призводить до багатомільйонних транзисторних важкоатлетів, які доступні сьогодні. Подібні процесори можуть виконувати близько мільярда операцій за секунду - тільки уявіть собі. До речі, зараз багато виробників стали цікавитися випуском 64-бітних мобільних процесорів і, очевидно, настає чергова хвиля, тільки цього разу королем моди є 64-розрядна архітектура. Може і я дістануся найближчим часом до цієї теми і повідаю вам, як насправді це працює. На цьому, мабуть, все сьогодні. Сподіваюся, вам було цікаво і ви дізналися багато нового.

2021 wisemotors.ru. Як це працює. Залізо. Майнінг. Криптовалюта.