середу, 11 жовтня 2017 р.

Література до принципів організації комп'ютера -- Інтернет

Взято тут.
Продовжуючи список літератури, тепер -- значно більш ефемерні джерела, посилання в Інтернеті. Зате їх більше. :-)

Цей список складається із двох частин -- літератури для безпосереднього вивчення теми та окремий історичний підрозділ. Прочитайте хоча б вступ до нього! :-)

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

Загальні посилання:
Елементна база:
  • 7400 series -- найбільш популярна серія мікросхем, включає реалізації всіх тих компонент, про які пише Токхейм та інші. 
  • List of 7400 series integrated circuits -- список членів цього сімейства мікросхем.
  • 4000 series -- ще одна така серія. Зараз, на загал, менш популярна, ніж 74хх, але трапляється. 
  • List of 4000 series integrated circuits.
  • NE555 -- таймер, генератор імпульсів і взагалі дуже корисна штука.
  • Не на вікі, ще один список мікросхем серії 74xx, привабливий тим, що містить схеми розташування виводів більшості мікросхем серії -- сильно спрощує практичну роботу із ними. 

Мікропроцесорний "напрямок":




Сайт, присвячений електроніці: http://www.electronics-tutorials.ws/. Простий і доступний. В основному розповідається про аналогові пристрої. Дуже рекомендую хоча б проглянути! Отак сходу, крім основ -- резисторів/транзисторів: "Input/Output Device", "Operational Amplifiers".  Але є і дещо безпосередньо для нас:

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

logisim-evolution -- продовження проекту logisim іншими авторами, підтримує багато що нового.

Курс "CSC392 - Computer Organization & Systems". Дуже хороші ілюстрації, гарний опис. Рекомендую ознайомитися! :-)
Додатково, звідти ж:

Ще один тематичний ресурс: "Digital electronics" -- представлення даних, цифрова логіка, логічні сімейства, комбінаційна та секвенційна логіка. Загляньте і до доволі просунутого ALU.


В 74хх серії є славнозвісний 4-бітний ALU 74181, який відіграв важливу роль в розвитку комп'ютерів (зокрема, на ньому базувався і Xerox Alto і Datapoint 2200 Version II -- для якого створювався Intel 8008, з насліддям останнього маємо справу до сьогодні) і продовжує використовуватися любителями для створення своїх процесорів до цих пір. То дуже повчальне його дослідження:
  1. "Inside the 74181 ALU chip: die photos and reverse engineering"
  2. "Inside the vintage 74181 ALU chip: how it works and why it's so strange" -- внизу інтерактивний симулятор! Кому ота вся кухня важко дається, може виявитися дуже помічним. 
Багато більше статей цього автора -- нижче, в історичній секції.


"Electronics Tutorial for Robotics" -- від аналогових схем до таймерів (555), комбінаційної логіки, тригерів, лічильників. Нічого особливого, але по своєму симпатичний ресурс. 

Шикарний симулятор електричних кіл, із багатьма цифровими та аналоговими прикладами. При чому, написаний він на JavaScirpt та доступний на github!

"Lessons in Electric Circuits" -- книга, від фізики електричних кіл (включаючи транзистори, підсилювачі, генератори) і до цифрових схем, по регістри, пам'ять, шини, АЦП (останні пункти -- оглядово).

Презентація по лічильниках



Від ALU плавно перейдемо до повноцінних процесорів. Почнемо із цього курсу:
  1. "Week 1 Tutorial - Data Representation " -- двійкова арифметика, цілі та дробові числа.
  2. "Week 2 Tutorial - Building an ALU " -- власне, воно, побудова арифметично-логічного модуля. Достатньо оглядово. Але містить реалізацію для симулятора Logisim!
  3. "An Example Hardwired CPU" -- простий процесор, команди якого "вшиті" в реалізацію. Теж із симуляцією.
  4. "An Example Microcoded CPU". В принципі, тут теж можна спробувати, сайт, на який посилається, недоступний, але див. тут: MythSim.

Я, на жаль, зовсім не дружу із відеоуроками -- ніяк не можу зрозуміти, як можна так вивчати такі абстрактні матерії... Але, так як багато кому подобається, то ще ось таке посилання: копія курсу "Computer Architecture" із Coursera.

Шикарнющий саморобний мегапроцесор:

 
Книга " Banner From NAND to Tetris Building a Modern Computer From First Principles" та сайт із лекціями від авторів: "Study Plan", див. також "Software".
З її приводу згадується цитата із "Архітектури" Таненбаума: "Since the actual hardware used consists only of the basic components described in Chap. 3, in theory, after fully understanding this chapter, the reader should be able to go out and buy a large bag full of transistors and build this subset of the JVM machine. Students who successfully accomplish this task will be given extra credit (and a complete psychiatric examination)." Слабак.

Список саморобних комп'ютерів: "Homepage for the home-built computers web-ring". Зокрема:


Відступаючи трішки в сторону, серія статей про трійкові логіку і трійкові схеми.



Історія

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

Із постійним потоком новинок в ІТ, виникає ілюзія, що немає сенсу заглядати в минуле, коли тут стільки руху. Це груба помилка. З одного боку, мінус зовнішня комерційна різноманітність, концепції та ідеї сучасних пристроїв достатньо давні. Декілька прикладів:
  • Xerox Alto -- GUI, мишка, WYSIWYG, Ethernet, лазерний принтер. 1973 рік. І Білл Гейтс і Стів Джобс про ці машини дуже добре знали.
  • Віртуальна пам'ять -- початок 1960-х.
  • ARPANET, перша реалізація TCP/IP -- початок 1970-х ("First ARPANET IMP log: the first message ever sent via the ARPANET, 10:30 pm, 29 October 1969.")
  • Зараз в настільних комп'ютерах та високопродуктивних системах домінують процесори сімейства x86. Його родоначальник, i8086, із яким вони до цих пір сумісні, вийшов в 1979 році. Та був, на рівні асемблера, сумісним із i8080, 1974. Та був ідейним, хоч і не сумісним, розвитком i8008, 1972. 
З іншого, розвиток технології йде по спіралі. Щоб не повторюватися, див. розділ "Відступ про спіральний розвиток" із моєї рецензії на "Операційні системи" Таненбаума.

Нарешті, часто старіші пристрої простіші для розуміння. Правда, часто -- не значить "завжди". Іноді, буває, такого накрутять...

Для студентів, яким було трохи менше двох десятиліть, придумав ще такий аргумент. Хто залишиться в індустрії і виживе, раніше 65 років на пенсію не піде. Дуже ймовірно -- пізніш. Це більше ніж 45 років активного життя. А тепер від 2017 віднімемо 45. Отримаємо 1972. i86 чи Інтернетом ще й не пахне. ARPANET вже є, хоча TCP/IP ще, певне, немає. Unix вже з'явився, але ніхто ще не підозрює, що із того буде. DOS/Windows нікому ще й приснитися не можуть (ну, може крім юзерів Xerox Alto :-). Розробка С ще тільки почалася. Перший мікропроцесор (i4004) рік, як з'явився.

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

Дуже хороша ілюстрація цього, стаття: "Каково это — быть разработчиком, когда тебе сорок". Хотів навести цитати, але то третина статті набереться... Тому обмежуся однією: "Не реагируйте на хайп", а далі -- читайте.

І просто приклад, як деякі, більш ніж дивні речі, з'явилися в стандарті на С/С++: "How to check if a pointer is in a range of memory". Здавалося б, хто зараз про сегменти і ото все пам'ятає...

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

Загальна хронологія:
  • Timeline of Computer History із сайту комп'ютерної історії. (На якому багато чого цікавого -- от, тексти DOS 1.1 та 2.0, ранніх версій фотошопу та MS Word і т.д.)
  • History of computing hardware -- із вікіпедії.


Інтелівські продукти


Перша мікросхема від Intel, 3101 RAM, 64 біти, квітень 1969. Всього $99.50 тодішніх, півтора долари за біт. :-) "Inside Intel's first product: the 3101 RAM chip held just 64 bits". Наступний рік: "Inside the Intel 1405: die photos of a shift register memory from 1970".
 

Певне, першим повноцінним процесором був Intel 4004. 1971 рік.

У нього існує навіть власний музей: "http://www.4004.com/". Зокрема, там є повні схеми та симулятор MCS-4 -- чіпсету, до якого належав 4004: "Complete Artwork, Schematics, and Simulator for Intel MCS-4 (4004 family) microprocessor chip-set: "Together again after 38 years!"".


Наступним процесором від Intel був 8008,  який призначався для "програмованого терміналу" Datapoint 2200. Із різних причин, інтелівський чіп не було використано розробником (CTC). Цікаво, що такий же мікропроцесор було розроблено і Texas Instruments, але вони особливо на ньому не зупинялися. 
Зображення із статті нижче.
Порівняння вигляду перших процесорів від Інтел та аналогу 8008 від Texas Instruments.
  • " Die photos and analysis of the revolutionary 8008 microprocessor, 45 years old". Дві цитати звідти. Про зворотну сумісність:

    "Nonetheless, some characteristics of the Datapoint 2200 still exist in today's x86 processors. For instance, the Datapoint 2200 had a serial processor, processing bytes one bit at a time. Since the lowest bit needs to be processed first, the Datapoint 2200 was little-endian. For compatibility, the 8008 was little-endian, and this is still the case in Intel's processors. Another feature of the Datapoint 2200 was the parity flag, since parity calculation was important for a terminal's communication. The parity flag has continued to the x86 architecture."

    І про історію, яка ходить по колу:

    "Now almost all chips are CMOS. [Interestingly, in 2007 Intel started using metal gates again in order to scale transistors further (details). In a way, semiconductor technology has gone full circle, back to metal gates, although now unusual metals such as hafnium are used.]".

    (Цікаво, може автор колись і про 8086/8088 так напише? :-)
  • "The Surprising Story of the First Microprocessors" -- зокрема, і про аналог 8008 від TI.

    "In my view, the key features of a microprocessor are that it provides a CPU on a single chip (including ALU, control functions, and registers such as a program counter) and that it is programmable. But a microprocessor isn’t a complete computer: Additional chips are typically needed for memory, I/O, and other support functions.

    Using such a definition, most people consider the Intel 4004 to be the first microprocessor because it contains all the components of the central processing unit on a single chip. Both Boone and Federico Faggin (of Intel’s 4004 team) agree that the 4004 beat the earliest TMX 1795 prototypes by a month or two. The latter would then represent the first 8-bit microprocessor, and the Intel 8008 the first commercially successful 8-bit microprocessor.
    "
  • Ще про нього ж: " The Texas Instruments TMX 1795: the (almost) first, forgotten microprocessor"
  • "Reverse-engineering the surprisingly advanced ALU of the 8008 microprocessor".
  • "Analyzing the vintage 8008 processor from die photos: its unusual counters" -- як тільки викручуватися не доводилося...

Крім безпосередніх нащадків, 8080 і 8086, у цієї гілки процесорів були відгалуження.

Перша -- Z80, 1976-го року, у свій час -- дуже популярний. (Його варіації хоч і програли x86 "великий" ринок, до цих пір продаються як мікроконтролери!)
Другий -- 8085 від Intel. Більше використовувався як мікроконтролер, теж дуже популярний. Навіть в космос літав (Sojourner та купа інших місій), кажуть, в Росії все ще випускають клон


Паралельно існували й інші популярні архітектури. Про всі говорити неможливо, але три, завдяки Ken Shirriff, згадаю.

Перша -- MOS Technology 6502, 1975. 8-бітний процесор, що був ядром Atari 2600, 8-бітних Atari, Apple II, Nintendo Entertainment System, Commodore 64. Все ще має велику кількість відданих фанатів. 
Поступаючись x86 в максимальній потужності, зараз ARM -- найпоширеніша архітектура мікропроцесорів. А починалося все так:
Фото із статті нижче.


Остання система -- Xerox Alto. Хвалив вже її вище. :=)

Взято на вікі.

Фото із статті вище. "The Xerox Alto II XM computer. Note the video screen is arranged in portrait mode. Next to the keyboard is a mouse. The Diablo disk drive is below the keyboard. The base contains the circuit boards and power supplies"
Згаданий Ken Shirriff бере участь у відновленні однієї такої машини до робочого стану. Розповіді про процес, не зважаючи на великий об'єм, видалися дуже захопливим чтивом!
 І ще, про давні калькулятори:

Більш давні часи


Сайт та віртуальний музей IBM 1401: "The IBM 1401 Demo Lab and Restoration Project"

Ken Shirriff, бравши участь у відновленні такої машини, трохи писав про них:

Але IBM почалася задовго до цифрових комп'ютерів. Трішки про ту доісторичну епоху: " 1950's tax preparation: plugboard programming with an IBM 403 Accounting Machine"

Ще варто детальніше поговорити про:

"555 timer teardown: inside the world's most popular IC" (Сторінка на вікі)


На разі -- все,

Дякую за увагу!

Немає коментарів:

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