Налаштування обладнання та програмного забезпечення

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

Ви використовуєте комп'ютер або мобільний пристрій, щоб прочитати цей топік в даний час. Для виконання цих дій комп'ютер або мобільний пристрій використовує мікропроцесор. Мікропроцесор є серцем будь-якого пристрою, сервера чи ноутбука. Існує багато марок мікропроцесорів від різних виробників, але всі вони роблять приблизно те ж саме і приблизно таким же чином.
Мікропроцесор- також відомий як процесор або центральний блок обробки – це обчислювальний двигун, який виготовлений на одному кристалі. Першим мікропроцесором був 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 перекладає цей код на мові асемблера. Якщо припустити, що оперативна пам'ять починається з адреси 128 в цьому процесорі, і постійне запам'ятовуючий пристрій (в якому міститься програма мовою асемблера) починається з адреси 0, то для нашого мікропроцесора асемблер може виглядати наступним чином:

// Assume a 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 129 8 1 // CONB 511 512 10 // COM13 14 // JG 1714 3115 1 // LOADA 12916 12917 2 // LOADB 12818 12819 8 // MUL20 5 // SAVEC 12921 1292 2 2 // 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-розрядна архітектура. Може й я дістануся найближчим часом до цієї теми і повідаю вам, як насправді це працює. На цьому, мабуть, на сьогодні. Сподіваюся, вам було цікаво, і ви дізналися багато нового.

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення надіслано
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!