загрузка...
загрузка...
На головну

Сучасні багаторівневі машини

  1. III. ПІДГОТОВКА БОЕВОЙ МАШИНИ ДО ПОДОЛАННЯ ВОДНОЇ
  2. IV. ЗБЕРІГАННЯ БОЕВОІ МАШИНИ
  3. Асинхронні машини (двигуни).
  4. Бойові машини піхоти - БМП
  5. Взаємодія людини і обчислювальної машини
  6. Виховання: сутність, призначення, сучасні ідеї
  7. Глава 19. Сучасні технології навчання

Більшість сучасних комп'ютерів складається з двох і більше рівнів. Існують машини навіть з шістьма рівнями (рис. 1.2). Рівень 0 - апаратне забезпечення машини. Його електронні схеми виконують програми, написані наязике рівня 1. Заради повноти потрібно згадати про існування ще одного рівня, розташованого нижче рівня 0. Цей рівень не показаний на рис. 1.2, так як він потрапляє в сферу електронної техніки і, отже, не розглядається в етойкніге. Він називається рівнем фізичних пристроїв.На цьому рівні знаходяться транзистори, які є примітивами для розробників комп'ютерів. Пояснювати, як працюють транзистори, - завдання фізики.

На самому нижньому рівні, цифровому логічному рівні,об'єкти називаються вентилями.Хоча вентилі складаються з аналогових компонентів, таких як транзистори, вони можуть бути точно змодельовані як цифрові засоби. У кожного вентиля є одне або кілька цифрових вхідних даних (сигналів, що представляють 0 або 1). Вентиль обчислює прості функції цих сигналів, такі як І або АБО. Кожен вентиль формується з декількох транзисторів. Кілька вентилів формують 1 біт пам'яті, який може містити 0 або 1. Біти пам'яті, об'єднані в групи, наприклад, по 16,32 або 64, формують регістри. Кожен регістр може містити одне двійкове число до певної межі.

З вентилів також може складатися сам комп'ютер.

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

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

назва, щоб точніше відобразити зміст.

На машинах, де тракт даних контролюється програмним забезпеченням,

мікропрограма - це інтерпретатор для команд на рівні 2. Вбудоване викликає команди з пам'яті і виконує їх одну за одною, використовуючи при цьому тракт даних. Наприклад, для того щоб виконати команду ADD, ця команда викликається з пам'яті, її операнди поміщаються в регістри, АЛП обчислює суму, а потім результат переправляється назад. На комп'ютері з апаратним контролем тракту даних відбувається така ж процедура, але при цьому немає програми, яка контролює інтерпретацію команд рівня 2.

Багаторівнева комп'ютерна організація 23

Другий рівень ми будемо називати рівнем архітектури системи команд.

Кожен виробник публікує керівництво для комп'ютерів, які він продає, під назвою «Руководство по машинному язику» або «Прінціпи роботи комп'ютера Western Wombat Model 100X» і т. П. Такі керівництва містять інформацію саме про цей рівень. Коли вони описують набір машинних команд, вони в дійсності описують команди, які виконуються мікропрограмою-інтерпретатором або апаратним забезпеченням. Якщо виробник поставляє два інтерпретатора для однієї машини, він повинен видати два керівництва по машинному мові, окремо для кожного інтерпретатора.

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

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

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

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

Ще одна зміна, що з'явилося на рівні 4, - спосіб, яким підтримуються більш високі рівні. Рівні 2 і 3 зазвичай інтерпретуються, а рівні 4, 5 і вище зазвичай, хоча і не завжди, підтримуються транслятором.

Інша відмінність між рівнями 1,2,3 і рівнями 4,5 і вище - особливість мови. Машинні мови рівнів 1,2 і 3 - цифрові. Програми, написані на цих мовах, складаються з довгих рядів цифр, які зручні для комп'ютерів, але абсолютно незручні для людей. Починаючи з четвертого рівня, мови містять слова і скорочення, зрозумілі людині.

Четвертий рівень являє собою символічну форму одного з язи

ков нижчого рівня. На цьому рівні можна писати програми в прийнятній для людини формі. Ці програми спочатку транслюються на мову рівня 1, 2 або 3, а потім інтерпретуються відповідною віртуальною або фактично існуючої машиною. Програма, яка виконує трансляцію, називається ассемблером.

П'ятий рівень зазвичай складається з мов, розроблених для прикладних програмістів. Такі мови називаються мовами високого рівня.Існують сотні мов високого рівня. Найбільш відомі серед них - BASIC, С, C ++, Java, LISP і Prolog. Програми, написані на цих мовах, зазвичай транслюються на рівень 3 або 4. Транслятори, які обробляють ці програми, називаються компиляторами.Відзначимо, що іноді також використовується метод інтерпретації. Наприклад, програми на мові Java зазвичай інтерпретуються.

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

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

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

і також.

Розвиток багаторівневих машин

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

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

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

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

еквівалентні.

Будь-яка операція, що виконується програмним забезпеченням, може бути вбудована в апаратне забезпечення (бажано після того, як вона усвідомлена). Карен Панетта Ленц говорив; «Аппаратное Забезпечення - це всього лише скам'яніле програмне обеспеченіе». Звичайно, зворотне теж вірно: будь-яка команда, яка виконується апаратним забезпеченням, може бути змодельована в програмному забезпеченні. Рішення розділити функції апаратного і програмного забезпечення засноване на таких факторах, як вартість, швидкість, надійність, а також частота очікуваних змін. Існує кілька жорстких правил, що зводяться до того, що X має бути пов'язана з апаратним забезпеченням, a Y повинен програмуватися.

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

2. Типи комп'ютерів

Технологічні і економічні аспекти

Ступінь технологічного прогресу можна спостерігати, використовуючи закон Мура,названий на честь одного із засновників і голови компанії Intel Гордона Мура, який відкрив його в 1965 році Закон Мура свідчить, що число транзісторовна одній мікросхемі подвоюється кожні 18 місяців, тобто збільшується на 60% щороку. Розміри мікросхем і дати їх виробництва, показані на рис. 1.6, підтверджують, що закон Мура до цих пір діє.

Багато фахівців вважають, що закон Мура діє і в XXI столітті, можливо, до 2020 року. Ймовірно, транзистори скоро складатимуться лише з кількох атомів, хоча досягнення квантової комп'ютерної техніки, може бути, дозволять використовувати для розміщення 1 біта спин одного електрона.

Ще один фактор розвитку комп'ютерних технологій - перший натановскій закон програмного забезпечення, названий на честь Натана Мірвольда, головного адміністратора компанії Microsoft. Цей закон говорить: «Програмне забезпечення - це газ. Воно поширюється і повністю заповнює резервуар, в якому знаходиться »Сучасні електронні редактори займають десятки мегабайтів. В майбутньому, безсумнівно, вони будуть займати десятки гігабайтів. Програмне забезпечення продовжує розвиватися і створює постійний попит на процесори, що працюють з більш високою швидкістю, на большійоб'ем пам'яті, на велику продуктивність пристроїв введення-виведення.

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

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

Великі досягнення спостерігаються також і в сфері телекомунікацій і створення мереж. Менше ніж за два десятиліття ми прийшли від модемів, які надсилають інформацію зі швидкістю 300 біт / с, до аналогових модемів, що працюють із швидкістю 56 Кбіт / с, телефонних лініях ISDN, де швидкість передачі інформації 2x64 Кбит / с, оптико-волоконних мереж, де швидкість вже більше ніж 1 Гбіт / с. Оптико-волоконні трансатлантичні телефонні кабелі (наприклад, ТАТ-12/13) коштують близько $ 700 млн., Діють протягом 10 років і можуть передавати 300 000 дзвінків одночасно, тому вартість 10-хвилинної міжконтинентальної зв'язку становить менше 1 цента. Лабораторні дослідження підтвердили, що можливі системи зв'язку, що працюють зі швидкістю 1 терабіт / с (1012 біт / с) на відстані більше 100 км без підсилювачів, Навряд чи треба згадувати тут про розвиток мережі Інтернет.

3. Сімейства комп'ютерів

3.1. Широкий спектр комп'ютерів

Річард Хаммінг, колишній дослідник з Bell Laboratories, зауважив, що кількісне зміна величини на порядок веде до якісної зміни.

Наприклад, гоночна машина, яка може їздити зі швидкістю 1000 км / год попустине Невада, докорінно відрізняється від звичайної машини, котораяездіт зі швидкістю 100 км / год по шосе Точно так же хмарочос в 100 поверхів непорівнянний з десятиповерховий багатоквартирним будинком А якщо мова йде про комп'ютерах, то тут за три десятиліття кількісні показники збільшилися не в 10, а в 1 000 000 разів.

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

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

Другий рядок - комп'ютери, які поміщаються всередину телефонів, телевізорів, мікрохвильових печей, CD-плеєрів, іграшок, ляльок і т. П. Через кілька років у всіх електричних приладах будуть перебувати вбудовані комп'ютери, кількість яких буде вимірюватися в мільярдах. Такі комп'ютери складаються з процесора, пам'яті менше 1 Мбайт і пристроїв введення-виведення, і все це на одній маленькій мікросхемі, яка коштує всього кілька доларів.

Наступний рядок - ігрові комп'ютери. Це звичайні комп'ютери з особливою графікою, але з обмеженим програмним забезпеченням і майже повною відсутністю відкритості, тобто можливості перепрограмування. Приблизно рівні їм за вартістю електронні записники і інші кишенькові комп'ютери, а також мережеві комп'ютери і web-термінали. Всі вони містять процесор, декілька мегабайтів пам'яті, будь-якої дисплей (може бути, навіть телевізійний) і більше нічого. Тому вони такі дешеві.

Далі йдуть персональні комп'ютери. Саме вони асоціюються у більшості людей зі словом «комп'ютер». Персональні комп'ютери бувають двох видів: настільні та ноутбуки. Вони зазвичай містять кілька мегабайтів пам'яті, жорсткий диск з даними на кілька гігабайтів, CD-ROM, модем, звукову карту та інші периферійні пристрої. Вони забезпечені складними операційними системами, мають можливість нарощування, при роботі з ними використовується широкий спектр програмного забезпечення. Комп'ютери з процесором Intel зазвичай називаються «персональними комп'ютерами», а комп'ютери з іншими

процесорами - «робочими станціями», хоча особливої ??різниці між ними немає.

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

Крім невеликих серверів з декількома процесорами існують системи, які називаються мережами робочих станцій (NOW - Networks of Workstations) або кластерами робочих станцій (COW - Clusters of Workstations). Вони складаються зі звичайних персональних комп'ютерів або робочих станцій, пов'язаних в мережу, по якій інформація передається зі швидкістю 1 Гбіт / с, і спеціального програмного забезпечення, що дозволяє всім машинам одночасно працювати над одним завданням. Такі системи широко застосовуються в науці і техніці. Кластери робочих станцій можуть включати в себе від декількох комп'ютерів до кількох тисяч. Завдяки низькій ціні компонентів окремі організації можуть набувати такі машини, які по ефективності є міні-суперкомпьютерами.

А тепер ми дійшли до великих комп'ютерів розміром з кімнату, нагадують комп'ютери 60-х років. У більшості випадків ці системи - прямі нащадки великих комп'ютерів серії IBM-360. Зазвичай вони працюють набагато швидше, ніж потужні сервери, але у них вище швидкість процесів введення-виведення і мають вони досить великим простором на диску - 1 терабайт і більше (1 терабайт = 1012байт). Такі системи коштують дуже дорого і вимагають великих вкладень в програмне забезпечення, дані і персонал, що обслуговує ці комп'ютери. Багато компаній вважають, що дешевше заплатити кілька мільйонів доларів один раз за таку систему, ніж навіть думати про те, що потрібно буде заново програмувати всі прикладні програми для маленьких комп'ютерів.

Саме цей клас комп'ютерів привів до проблеми 2000 року. Проблема виникла через те, що в 60-е і 70-е роки програмісти, які пишуть програми на мові COBOL, представляли рік двозначним десятковим числом з метою економііпамяті. Вони не змогли передбачити, що їх програмне забезпечення буде використовуватися через три або чотири десятиліття. Багато компаній повторили ту ж помилку, додавши до числа року тільки два десяткових розряду. Автор цієї книги пророкує, що кінець цивілізації відбудеться опівночі 31 грудня 9999 року, коли відразу знищаться всі COBOL-програми, написані за 8000 років.

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

3.2. сімейства комп'ютерів

У цьому розділі ми дамо короткий опис трьох комп'ютерів, які будуть використовуватися в якості прикладів в цій книзі: Pentium II, UltraSPARC II і picojava II.

Pentium II

У 1968 році Роберт Нойс, винахідник кремнієвої інтегральної схеми, Гордон Мур, автор відомого закону Мура, і Артур Рок, капіталіст з Сан-Франциско, заснували корпорацію Intel для виробництва комп'ютерних мікросхем. За перший рік свого існування корпорація продала мікросхем всього на $ 3000, але потім обсяг продажів компанії помітно збільшився.

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

У вересні 1969 року японська компанія Busicom звернулася до корпорації Intel з проханням випустити 12 несерійних мікросхем для електронної обчислювальної машини. Інженер компанії Intel Тед Хофф, призначений на виконання цього проекту, вирішив, що можна помістити 4-бітний універсальний процесор на одну мікросхему, яка буде виконувати ті ж функції і при цьому виявиться простіше і дешевше. Так в 1970 році з'явився перший процесор на одній мікросхемі, процесор 4004 на 2300 транзисторах.

Зауважимо, що ні Intel, ні Busicom не мали ні найменшого поняття, яке грандіозне відкриття вони зробили. Коли компанія Intel вирішила, що варто спробувати використовувати процесор 4004 в інших розробках, вона запропонувала купити всі права на нову мікросхему у компанії Busicom за $ 60000, тобто за суму, яку Busicom заплатила Intel за розробку цієї мікросхеми. Busicom відразу прийняла пропозицію Intel, і Intel почала роботу над 8-бітної версією мікросхеми 8008, випущеною в 1972 році.

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

Як і PDP-8, він зробив революцію на комп'ютерному ринку і відразу став масовим продуктом: тільки компанія DEC продала тисячі PDP-8, a Intel - мільйони процесорів 8080.

У 1978 році з'явився процесор 8086 - 16-бітний процесор на одній мікросхемі. Процесор 8086 був багато в чому схожий на 8080, але не був повністю сумісний з ним. Потім з'явився процесор 8088 з такою ж архітектурою, як і у 8086.

Він виконував ті ж програми, що і 8086, але замість 16-бітної шини у нього була 8-бітна, через що процесор працював повільніше, але коштував дешевше, ніж 80861. Коли IBM вибрала процесор 8088 для IBM PC, ця мікросхема стала еталоном у виробництві персональних комп'ютерів.

Ні 8088, ні 8086 не могли звертатися до більше 1 Мбайт пам'яті. До початку 80-х років це стало серйозною проблемою, тому компанія Intel розробила модель 80286, сумісну з 8086. Основний набір команд залишився, по суті, таким же, як у процесорів 8086 і 8088, але пам'ять була влаштована трохи по-іншому, хоча і могла працювати як і раніше через вимоги сумісності з попередніми мікросхемами. Процесор 80286 використовувався в IBM PC / AT і в моделях PS / 2.

Він, як і 8088, користувався великим попитом (головним чином тому, що покупці розглядали його як швидший процесор 8088).

Наступним кроком був 32-бітний процесор 80386, випущений в 1985 році. Як і 80286, він був більш-менш сумісний з усіма старими версіями. Сумісність такого роду виявлялася благом для тих, хто користувався старим програмним забезпеченням, і деяким незручністю для тих, хто вважав за краще сучасну архітектуру, не обтяжену помилками і технологіями минулого.

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

У цей момент Intel, програвши судову тяжбу з приводу порушення правил найменування товарів, з'ясувала, що номери (наприклад, 80486) не можуть бути торговою маркою, тому наступне покоління комп'ютерів отримало назву Pentium (від грецького слова Леута - п'ять). На відміну від 80486, у якого був один внутрішній конвейєр, Pentium мав два, що дозволяло працювати йому майже в два рази швидше (конвеєри ми розглянемо докладно в розділі 2).

Коли з'явилося наступне покоління комп'ютерів, ті, хто розраховував на назва Sexium (sex по-латині - шість), були розчаровані. Назва Pentium стало так добре відомо, що його вирішили залишити, і нову мікросхему назвали Pentium Pro. Незважаючи на настільки незначна зміна назви, цей процесор дуже сильно відрізнявся від попереднього. У нього була зовсім інша внутрішня організація, і він міг виконувати до п'яти команд одночасно.

Ще одне нововведення у Pentium Pro - дворівнева кеш-пам'ять. Процесор містив 8 Кбайт пам'яті для часто використовуваних команд і ще 8 Кбайт для часто використовуваних даних. У корпусі Pentium Pro поряд з процесором (але не на самій мікросхемі) знаходилася інша кеш-пам'ять в 256 Кбайт.

Слідом за Pentium Pro з'явився процесор Pentium II, по суті такий же, як і його попередник, але з особливою системою команд для мультимедіа-завдань (ММХ - multimedia extensions). Ця система команд призначалася для прискорення обчислень, необхідних при відтворенні зображення і звуку. При наявності ММХ спеціальні співпроцесори були не потрібні. Дані команди були в наявності і в більш пізніх версіях Pentium, але їх не було в Pentium Pro.

Таким чином, комп'ютер Pentium II поєднував в собі функції Pentium Pro з мультимедіа-командами.

На початку 1998 року Intel запустив нову лінію продукції під назвою Celeron. Celeron мав меншу продуктивність, ніж Pentium II, але зате стоілдешевле. Оскільки у комп'ютера Celeron така ж архітектура, як у Pentium II, ми не будемо обговорювати його в цій книзі. У червні 1998 року компанія Intel випустила спеціальну версію Pentium II - Хеоп. Він мав кеш-пам'ять більшого обсягу, його внутрішня шина працювала швидше, були вдосконалені засоби підтримки многопроцессорного режиму, але в усьому іншому він залишився звичайним Pentium II, тому ми його теж не будемо обговорювати. Комп'ютери сімейства Intel показані в табл. 1.4.

Всі мікросхеми Intel сумісні зі своїми попередниками аж до

процесора 8086. Іншими словами, Pentium II може виконувати програми, написані для процесора 80861. Працює завжди була одним з головних вимог при розробці нових комп'ютерів, щоб покупці могли продовжувати працювати зі старим програмним забезпеченням і не витрачати гроші на нове. Звичайно, Pentium II у багато разів складніше, ніж 8086, тому він може виконувати багато функцій, які не здатний виконувати процесор 8086. Всі ці поступові доопрацювання в кожній новій версії привели до того, що архітектура Pentium II не так проста, як могла б бути , якби розробникам процесора Pentium II надали 7,5 млн транзисторів і команд, щоб почати все заново.

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

Якщо навпаки дати випуску кожної мікросхеми поставити число транзисторів на цій мікросхемі (кількість транзисторів показано в табл. 1.4), ми побачимо, що закон Мура діє і тут. Графік показаний на рис.1.7.

UltraSPARC II

У 70-х роках у багатьох університетах була дуже популярна операційна система UNIX, але персональні комп'ютери не підходили для цієї операційної системи, тому любителям UNIX доводилося працювати на міні-комп'ютерах з поділом часу, таких як PDP-11 і VAX. Енді Бехтольсхайм, аспірант Стенфордського університету, був дуже засмучений тим, що йому потрібно відвідувати комп'ютерний центр, щоб працювати з UNIX. У 1981 році він вирішив цю проблему, самостійно побудувавши персональну робочу станцію UNIX зі стандартних частин, які є у продажу, і назвав її SUN-1 (Stanford University Network - мережа Стенфордського університету).

На Бехтольсхайма скоро звернув увагу Винод Косло, 27-річний індієць, який горів бажанням років до тридцяти стати мільйонером і піти від справ. Косло запропонував Бехтольсхайму організувати компанію по виробництву робочих станцій Sun. Він найняв Худоби Мак-Нілі, іншого аспіранта Стенфордського університету, щоб той очолив виробництво. Для написання програмного забезпечення вони найняли Білла Джоя, головного творця системи UNIX. У 1982 році вони вчотирьох заснували компанію Sun Microsystems. Перший комп'ютер компанії, Sun-1, був оснащений процесором Motorola 68020 і мав великий успіх, як і наступні моделі Sun-2 і Sun-З, які також були сконструйовані з використанням мікропроцесорів Motorola. Ці машини були набагато могутніше, ніж інші персональні комп'ютери того часу (звідси і назва «робоча станція»), і спочатку були призначені для роботи в мережі. Кожна робоча станція Sun була оснащена мережевим адаптером Ethernet і програмним забезпеченням TCP / IP для зв'язку з мережею ARPANET, попередницею Інтернету.

У 1987 році компанія Sun, яка на той час продавала робочих станцій на півмільярда доларів на рік, вирішила розробити свій власний процесор, заснований на новому революційному проекті каліфорнійського університету в Берклі (RISC II). Цей процесор називався SPARC (Scalable ProcessorARCitecture - нарощувана архітектура процесора). Він був використаний при виробництві робочої станції Sun-4. Через деякий час всі робочі станції компанії Sun стали проводитися на основі цього процесора.

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

Мікросхеми називалися MicroSPARC, HyperSPARK, SuperSPARK і TurboSPARK. Мало чим відрізняючись один від одного, всі вони були сумісні і могли виконувати одні і ті ж програми, які не доводилося змінювати.

Компанія Sun завжди хотіла, щоб різні підприємства поставляли для SPARK складові частини і системи. Потрібно було побудувати цілу індустрію, тільки в цьому випадку можна було конкурувати з компанією Intel, яка лідирує на ринку персональних комп'ютерів. Щоб завоювати довіру компаній, які були зацікавлені у виробництві процесорів SPARC, але не хотіли вкладати кошти в продукцію, яку буде придушувати Intel, компанія Sun створила промисловий консорціум SPARC International для керівництва розвитком майбутніх версій архітектури SPARC. Важливо розрізняти архітектуру SPARC, яка представляє собою набір команд, і власне виконання цих команд. У цій книзі ми будемо говорити і про загальну архітектурі SPARC, і про процесор, використовуваному в робочій станції SPARC (попередньо обговоривши процесори в третій та четвертій главах).

Перший SPARC був 32-бітовим і працював з частотою 36 МГц. Центральний процесор називався Ш (Integer Unit - процесор цілочисельний арифметики) і був вельми посереднім. У нього було тільки три основні формати команд і в цілому всього 55 команд. З появою процесора з плаваючою точкою додалося ще 14 команд. Відзначимо, що компанія Intel почала з 8- і 16-бітних мікросхем (моделі 8088, 8086, 80286), а вже потім перейшла на 32-бітові (модель 80386), a Sun, на відміну від Intel, відразу почала з 32-бітових .

Грандіозний перелом в розвитку SPARC відбувся в 1995 році, коли була розроблена 64-бітова версія (версія 9) з адресами і регістрами по 64 біт. Першою робочою станцією з такою архітектурою став UltraSPARC I, що вийшов друком у 1995 році. Він був повністю сумісний з 32-бітових версіях SPARC, хоча сам був 64-бітовим.

У той час як попередні машини працювали з символьними і числовими даними, UltraSPARC з самого початку був призначений для роботи з зображеннями, аудіо, відео і мультимедіа взагалі. Серед нововведень, крім 64-бітної архітектури, з'явилися 23 нові команди, в тому числі команди для упаковки і розпаковування пікселів з 64-бітових слів, масштабування і обертання зображень, переміщення блоків, а також для компресії і декомпресії відео в реальному часі. Ці команди називалися VIS (Visual Instruction Set) і призначалися для підтримки мультимедіа. Вони були аналогічні командам ММХ.

UltraSPARC призначався для web-серверів з десятками процесорів і фізичної пам'яттю до 2 Тбайт (терабайт, 1Тбайт = 1012 байтів). Проте деякі версії UltraSPARC можуть використовуватися і в ноутбуках.

За UltraSPARC I пішли UltraSPARC II і UltraSPARC III. Ці моделі відрізнялися один від одного за швидкістю, і у кожної з них з'являлися якісь нові особливості. Коли ми будемо говорити про архітектуру SPARC, ми будемо мати на увазі 64-бітну версію комп'ютера UltraSPARC II (версії 9).

PicoJava II

Мова програмування С придумав один з працівників компанії Bell Laboratories Денніс Рітчі. Ця мова призначався для роботи в операційній системі UNIX. Через велику популярність UNIX З скоро став домінуючим мовою в системному програмуванні. Через кілька років Бьярн Строуструп, теж з компанії Bell Laboratories, додав до С деякі особливості з об'єктно-орієнтованого програмування, і з'явилася мова C ++, який також став дуже

популярним.

В середині 90-х років дослідники в Sun Microsystems думали, як зробити

так, щоб користувачі могли викликати виконавчі програми через Інтернет і завантажувати їх як частину web-сторінок. Їм подобався C ++, але він не був надійним в тому сенсі, що програма, послана на деякий комп'ютер, могла завдати шкоди цьому комп'ютеру. Тоді вони вирішили на основі C ++ створити нову мову програмування Java, з яким не було б подібних проблем. Java - об'єктно-орієнтована мова, що застосовується при вирішенні різних прикладних задач. Оскільки ця мова простий і популярний, ми будемо використовувати його для прикладів.

Оскільки Java - всього лише мова програмування, можна написати компілятор, який перетворюватиме його для Pentium, SPARC або будь-якого іншого комп'ютера. Такі компілятори існують. Однак ця мова була створена в першу чергу для того, щоб пересилати програми між комп'ютерами через Інтернет і щоб користувачам не доводилося змінювати їх. Але якщо програма на мові Java компілювати для SPARC, то коли вона пересилалася по Інтернету на Pentium, запустити там цю програму було вже не можна.

Щоб вирішити цю проблему, компанія Sun придумала нову віртуальну машину JVM (J a v a Virtual Machine - віртуальна машина Java). Пам'ять у цієї машини складалася з 32-бітових слів, машина підтримувала 226 команд. Більшість команд були простими, але виконання деяких досить складних команд вимагало великої кількості циклів звернення до пам'яті.

У компанії Sun розробили компілятор, що перетворює програми на мові Java на рівень JVM, і інтерпретатор JVM для виконання цих програм.

Цей інтерпретатор був написаний на мові С і, отже, міг використовуватися практично на будь-якому комп'ютері. Отже, щоб комп'ютер міг виконувати виконавчі програми на мові Java, потрібно було всього лише дістати інтерпретатор JVM для відповідного комп'ютера (наприклад, для Pentium II з системою Windows 98 або для SPARC з системою UNIX) разом з певними програмами підтримки і бібліотеками. Крім того, більшість браузерів в Інтернеті містять інтерпретатор JVM, що дозволяє легко запускати аплети (невеликі виконавчі програми на Java, пов'язані зі сторінками World Wide Web).

Більшість цих аплетів підтримують анімацію і звук.

Інтерпретація програм JVM (і будь-яких інших програм) відбувається повільно. Альтернативний підхід - спочатку скомпілювати аплет або іншу програму JVM для вашої власної машини, а потім запустити скомпільовану програму. Така стратегія вимагає наявності компілятора з JVM на машинний мову всередині браузера і можливості активізувати його, коли необхідно. Ці компілятори називаються JIT-компіляторами (Just In Time - «якраз вчасно»), і вони широко поширені. Однак ця система створює деяку затримку між отриманням JVM-програми і її виконанням, оскільки JVM-програма компілюється на машинну мову.

Крім програмного забезпечення JVM (JVM-інтерпретаторів і JIT-компіляторів) Sun і інші компанії розробили мікросхеми JVM - процесори, які відразу виконують виконавчі програми JVM без будь-якої інтерпретації та компіляції. Picojava I і picojava II були розроблені для ринку вбудованих систем. На цьому ринку потрібні потужні і дуже дешеві процесори (ціна нижче $ 50), що вбудовуються всередину пластикових карток, телевізорів, телефонів і інших пристроїв, особливо таких, які забезпечують зв'язок із зовнішнім світом. Підприємства, що мають патент на виробництво мікросхем компанії Sun, могли виробляти власні мікросхеми на основі проекту picojava, в тій чи іншій мірі змінюючи їх, включаючи і прибираючи процесор з плаваючою точкою, перетворюючи розмір кеш-пам'яті і т. П.

Цінність мікросхеми Java полягає в тому, що вона здатна змінювати функції процесі роботи. Наприклад, уявімо собі адміністратора, у якого є телефон з процесором Java. Адміністратору ніколи не доводилося читати факси на крихітному екрані телефону, але в один прекрасний день йому це знадобилося. Тоді він дзвонить провайдеру і просить надати йому аплет для перегляду факсів, і таким чином додає нову функцію до свого телефону. Але через деякі особливості приладу і нестачі пам'яті неможливо використовувати інтерпретатори і JIT-компілятори, тому саме в таких випадках необхідні мікросхеми JVM.

Picojava II - не фізична мікросхема (ви не можете піти в магазин і купити її), а проект, який є основою для ряду мікросхем, наприклад Sun Microjava 701 та інших. Ці мікросхеми виробляються підприємствами, які отримали патент Sun. Ми будемо використовувати процесор picojava II в якості ілюстративного прикладу, оскільки він дуже сильно відрізняється від Pentium II і UltraSPARC II і має зовсім іншу сферу застосування. Picojava II представляє особливий інтерес для нас, оскільки в розділі 4 ми розповімо, як можна створити JVM за допомогою микропрограммирования. Тоді ми зможемо порівняти запрограмованим JVM з апаратним забезпеченням JVM. Picojava II містить два факультативних процесора: кеш-пам'ять і процесор з плаваючою точкою, які кожен виробник може включати чи не включати в розробку. З метою простоти ми будемо розглядати picojava II як мікросхему, хоча насправді це не мікросхема, а проект мікросхеми. Іноді ми будемо говорити про мікросхемі Sun Microjava 701, яка є втіленням проекту picojava II. Але навіть якщо ми не будемо згадувати конкретні мікросхеми, читачі повинні пам'ятати, що picojava II - це не фізична мікросхема, а проект, на основі якого виробники розробляють різні мікросхеми.

Використовуючи Pentium II, UltraSPARC II і picojava II в якості прикладів, ми можемо вивчити три різних типи процесорів. Перший з них являє собою CISC з суперскалярні процесором, другий - RISC з суперскалярні процесором. Третій використовується у вбудованих системах. Ці три процесора сильно відрізняються один від одного, що дає нам можливість краще побачити діапазон комп'ютерних розробок.

лекція 2. Процесори

1. Пристрій центрального процесора.

2. Механізм виконання команд.

3. Системи команд RICS і CISC

1. Пристрій центрального процесора

1.1. Процесори

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

Процесор складається з декількох частин. Блок управління відповідає за виклик

команд з пам'яті і визначення їх типу. Арифметико-логічний пристрій виконує арифметичні операції (наприклад, складання) і логічні операції (наприклад, логічне І).

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

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

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

1.2. Пристрій центрального процесора

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

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

Більшість команд можна розділити на дві групи: команди типу регістр-

пам'ять і типу регістр-регістр. Команди першого типу викликають слова з пам'яті, поміщають їх в регістри, де вони використовуються в якості вхідних даних АЛП. ( «Слова» - це такі елементи даних, які переміщаються між пам'яттю і регістрамі1.) Словом може бути ціле число. Пристрій пам'яті ми обговоримо нижче в цьому розділі. Інші команди цього типу поміщають регістри назад в пам'ять.

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

2. Механізм виконання команд

Центральний процесор виконує кожну команду за кілька кроків:

1) викликає наступну команду з пам'яті і переносить її в регістр команд;

2) змінює положення лічильника команд, який тепер повинен вказувати на

наступну команду;

3) визначає тип викликаної команди;

4) якщо команда використовує слово з пам'яті, визначає, де знаходиться це слово;

5) переносить слово, якщо це необхідно, в регістр центрального процесора;

6) виконує команду;

7) переходить до кроку 1, щоб почати виконання наступної команди.

Така послідовність кроків (вибірка-декодування-виконання) є основою роботи всіх комп'ютерів.

Опис роботи центрального процесора можна представити у вигляді програми англійською мовою. У лістингу 2.1 приведена така програма-інтерпретатор на мові Java. В описуваному комп'ютері є два регістри: лічильник команд, який містить шлях до адресою наступній команди, і акумулятор, в якому зберігаються результати арифметичних операцій. Крім того, є внутрішні регістри, в яких зберігається поточна команда (instr), тип поточної команди (instr_type), адреса операнда команди (datajloc) і сам операнд (data). Кожна команда містить одну адресу осередки пам'яті. В осередку пам'яті знаходиться операнд, наприклад шматок даних, який потрібно додати в акумулятор.

Сама можливість написати програму, що імітує роботу центрального процесора, показує, що програма не обов'язково повинна виконуватися реальним процесором, що належать до апаратного забезпечення. Навпаки, викликати з пам'яті, визначати тип команд і виконувати ці команди може інша програма. Така програма називається інтерпретатором. Про інтерпретатора ми говорили в розділі 1.

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

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

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

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

Вирішенням цієї проблеми стала інтерпретація. Ця технологія, вперше запропонована Уилксом в 1951 році, дозволяла розробляти прості дешеві комп'ютери, які, тим не менш, могли виконувати велику кількість команд. В результаті IBM створила архітектуру System / 360, сімейство сумісних комп'ютерів, різних за ціною і продуктивності. Апаратне забезпечення без інтерпретації використовувалося тільки в найдорожчих моделях.

Прості комп'ютери з інтерпретованими командами мали деякі інші переваги. Найбільш важливими серед них були:

1) можливість фіксувати неправильно виконані команди або навіть заповнювати недоліки апаратного забезпечення;

2) можливість додавати нові команди при мінімальних витратах, навіть після покупки комп'ютера;

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

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

До кінця 70-х років інтерпретатори стали застосовуватися практично у всіх моделях, крім найдорожчих машин з дуже високою продуктивністю (наприклад, Сгау-1 і комп'ютерів серії Control Data Cyber). Використання інтерпретаторів виключало високу вартість складних команд, і розробники могли вводити все більш і більш складні команди, особливо різні способи визначення використовуваних операндів.

Ця тенденція досягла піку свого розвитку в розробці комп'ютера VAX (виробник Digital Equipment Corporation), у якого було кілька сотень команд і більше 200 способів визначення операндів в кожній команді. На жаль, архітектура VAX з самого початку розроблялася з використанням інтерпретатора, а продуктивності приділялося мало уваги. Це призвело до появи великої кількості команд другорядного значення, які важко було виконувати відразу без інтерпретації. Дане упущення стало фатальним як для VAX, так і для його виробника (компанії DEC). Compaq купив DEC в 1998 році.

Хоча найперші 8-бітові мікропроцесори були дуже простими і містили невеликий набір команд, до кінця 70-х років навіть вони стали розроблятися з використанням інтерпретаторів. У цей період основною проблемою для розробників стала зростаюча складність мікропроцесорів. Головна перевага інтерпретації полягало в тому, що можна було розробити простий процесор, а вся складність зводилася до створення інтерпретатора. Таким чином, розробка складного апаратного забезпечення заміщалася розробкою складного програмного забезпечення.

Успіх Motorola 68000 з великим набором інтерпретованих команд і одно-

тимчасовий провал Zilog Z8000, у якого був настільки ж великий набір команд, але не було інтерпретатора, продемонстрували всі переваги використання інтерпретаторів при розробці нових машин. Успіх Motorola 68000 був дещо несподіваним, враховуючи, що Z80 (попередник Zilog Z8000) користувався більшою популярністю, ніж Motorola 6800 (попередник Motorola 68000).

Звичайно, важливу роль тут грали і інші чинники, наприклад те, що Motorola багато років займалася виробництвом мікросхем, a Exxon (власник Zilog) довгий час був нафтовою компанією. Ще один аргумент на користь інтерпретації - існування швидких постійних запам'ятовуючих пристроїв (так званих командних ПЗУ) для зберігання

інтерпретаторів. Припустимо, що для виконання звичайної інтерпретується команди Motorola 68000 інтерпретатора потрібно виконати 10 команд, які називаються мікрокомандами, по 100 не кожна, і зробити 2 звернення до оперативної пам'яті по 500 не кожне. Загальний час виконання команди складе, отже,-2000 не, всього лише в два рази більше, ніж в кращому випадку могло б зайняти безпосереднє виконання цієї команди без інтерпретації. А якщо

б не було спеціального швидкодіючого постійного пам'яті

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

3. Системи команд RISC і CISC

В кінці 70-х років проводилося багато експериментів з дуже складними командами, поява яких стало можливим завдяки інтерпретації. Розробники намагалися зменшити прірву між тим, що комп'ютери здатні робити, і тим, що вимагають мови високого рівня. Чи хто-небудь тоді думав про розробку більш простих машин, так само як зараз мало хто займається розробкою менш потужних операційних систем, мереж, редакторів і т. Д. (На жаль). У компанії IBM група розробників на чолі з Джоном Коком протистояла цієї тенденції; вони спробували втілити ідеї Сеймура Крея, створивши експериментальний високоефективний міні-комп'ютер 801. Хоча IBM не займалася збутом цієї машини, а результати експерименту були опубліковані тільки через кілька років, звістка швидко рознеслася по світу, і інші виробники

теж зайнялися розробкою подібних архітектур.

У 1980 році група розробників в університеті Берклі на чолі з Девідом

Паттерсоном і Карло Секвіном почала розробку процесорів VLSI без використання інтерпретації. Для позначення цього поняття вони придумали термін RISC і назвали новий процесор RISC I, слідом за яким незабаром був випущений RISC II. Трохи пізніше, в 1981 році, Джон Хеннесі в Стенфорді розробив і випустив іншу мікросхему, яку він назвав MIPS. Ці дві мікросхеми розвинулися в комерційно важливі продукти SPARC і MIPS відповідно.

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

У той час як розроблялися ці прості процесори, загальну увагу

приваблювало відносно невелика кількість команд (зазвичай їх було близько 50). Для порівняння: число команд в DEC VAX і великих IBM в той час становило від 200 до 300. RISC - це скорочення від Reduced Instruction Set Computer - комп'ютер зі скороченим набором команд. RISC противопоставлялся CISC (Complex Instruction Set Computer - комп'ютер з повним набором команд). Як приклад CISC можна привести VAX, який домінував в той час в наукових комп'ютерних центрах. На сьогоднішній день мало хто вважає, що головна відмінність RISC і CISC складається в кількості команд, але назва зберігається до цих пір.

З цього моменту почалася грандіозна ідеологічна війна між прихильниками RISC і розробниками VAX, Intel і великих IBM. На їхню думку, найкращий спосіб розробки комп'ютерів - включення туди невеликої кількості простих команд, кожна з яких виконується за один цикл тракту даних (див. Рис. 2.2), тобто бере два регістра, виробляє над ними яку-небудь арифметичну або логічну операцію ( наприклад, складання або логічне і) і поміщає результат назад в регістр. Як аргумент вони стверджували, що навіть якщо RISC повинна виконувати 4 або 5 команд замість однієї, яку виконує CISC, притому що команди RISC виконуються в 10 разів швидше (оскільки вони не інтерпретуються), він виграє в швидкості. Слід також зазначити,

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

З огляду на переваги продуктивності RISC, можна було б предпо-

ложить, що такі комп'ютери, як Alpha компанії DEC, стали домінувати над комп'ютерами CISC (Pentium і т. д.) на ринку. Однак нічого подібного не сталося. Виникає питання: чому?

По-перше, комп'ютери RISC були несумісні з іншими моделями, а багато компаній вклали мільярди доларів в програмне забезпечення для продукції Intel. По-друге, як не дивно, компанія Intel зуміла втілити ті ж ідеї в архітектурі CISC. Процесори Intel, починаючи з 486-го, містять ядро ??RISC, яке виконує найпростіші (і зазвичай найпоширеніші) команди за один цикл тракту даних, а за звичайною технологією CISC інтерпретуються більш складні команди. В результаті звичайні команди виконуються швидко, а більш складні та рідкісні - повільно. Хоча при такому «гібридному» підході робота відбувається не так швидко, як у RISC, дана архітектура має ряд переваг, оскільки дозволяє використовувати старе програмне забезпечення без змін.

лекція 3. Принципи розробки сучасних комп'ютерів.

1. Основні принципи розробки.

2. Паралелізм на рівні команд.

3. Паралелізм на рівні процесорів.

 



Попередня   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   Наступна

Паралелізм на рівні команд | Осередки пам'яті і їх адреси. | Модульне ОЗУ. | Шини інформаційного обміну. | Символьні термінали. | Символьне кодування інформації. | Інтегральні схеми. | комбінаційні схеми | арифметичні схеми | Засувки, тригери. |

загрузка...
© um.co.ua - учбові матеріали та реферати