Комп'ютери не сумісні з IBM PC. IBM PC-сумісні комп'ютери

З підтримкою роботи SD-карти виникло відразу два великих питання– апаратна підтримка шини SPI та протокол взаємодії з самою картою.

В принципі, SPI можна реалізувати повністю програмно, але мені хотілося розважатися і з «залізом» теж, тому я героїчно взявся за малювання приймач-передавача байта у схемному дизайні. На мій подив, нічого складного в цьому не виявилося, і досить скоро я вже спостерігав на екрані осцилографа 8-бітові пакети, що жваво бігають, містять саме те, що мені хотілося. До речі, тут я вперше оцінив можливість нового осцилографа не просто показувати купу сигналів, а ще об'єднувати їх логічно у відповідну шину. Набагато приємніше бачити, що осцилограф зрозумів, що передається саме байт A5, а не вручну дивитися, чи в потрібних місцях знаходяться переходи з 0 до 1 і навпаки.

Для спрощення завдання я не намагався підлаштовуватися під усі типи та різновиди карт, а обмежився оригінальною SD (не SDHC або ще якісь варіанти) картою. Небагато програмування, і ось уже на екрані став відображатися вміст 0-го сектора карти. Відразу після цього навів ці функції до певної подібності INT 13h, додав у зародковому вигляді INT 19h (boot load) і побачив на екрані наступне:

Так як в той момент при читанні завжди зчитувався тільки 0-й сектор, то початковий завантажувач (який знаходиться в цьому секторі), не знаходив ОС для завантаження, про що і повідомляв. Але це вже дрібниці – головне, що моя схема потихеньку почала перетворюватися на справжній комп'ютері вже навіть намагалася завантажитись!

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

Звичайно, відразу завантаження не пройшла, але я і не очікував цього. Заздалегідь знаючи, що у мене в BIOS'і не реалізовано купу функцій, я поставив на всі переривання заглушки, і при зверненні до нереалізованої функції на екран виводилася вся необхідна інформація– до якого переривання та з якими аргументами звертаються. Далі йшов процес написання обробника відповідної функції (а ще частіше - просто тимчасової заглушки), і процес продовжувався. Несподівано все зупинилося на функції, яка взагалі відсутня у оригінальному PC – одна з функцій INT 2F, пов'язану з обробкою подій. Я бачив, що DOS визначає тип PC, і начебто не повинна викликати переривання, відсутні на даному типі, але, тим не менш, це відбувалося і процес зупинявся. Проста заглушка не допомогла, а всю функцію реалізовувати не хотілось із принципу.

Зараз уже не пам'ятаю весь хід думок (дуже багато чого дивився в той момент у вихідних DOS і в процесі завантаження), але в черговий раз на даному «зависанні» я вирішив викликати купу переривань (на той час у мене був відключений таймер на INT 08h ) і натиснув клавішу Shift. Несподівано сталося диво:

Скажу чесно, емоцій на мене нахлинуло досить багато - пройти шлях від макетки з парою мікросхем до завантаження DOS за місяць, та ще й короткими набігами (через хронічний брак часу) начебто досить круто (вибачте за хвастощі)!

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

Після запуску DOS настала черга позапускати інші програми. Напевно, можна здогадатися, чия черга була першою – природно, як то кажуть, старий добрий Norton Commander. Як не дивно, метушні з ним було помітно більше, ніж із DOS'ом. NC при запуску викликав дику кількість функцій, причому у ряді випадків обійтися простими заглушками не вдавалося, доводилося писати хоча б мінімум функціональності.

Проте проблеми були більш кількісні, ніж якісні, і незабаром вдалося довести процес завантаження NC до логічного завершення:

Такий «цікавий» зовнішній виглядобумовлений кількома причинами:
- відеоадаптер не підтримував на той момент атрибути
- у мене не було другої частини знакогенератора, в якій міститься псевдографіка, тому у відповідних місцях опинилися символи з нижньої частини кодової таблиці
- не було реалізовано деякі функції INT 10h.

Взагалі мене періодично дивувало, яким саме чином реалізовані ті чи інші функції різних програм (і навіть у DOS). Наприклад, команда CLS (очищення екрану) викликала функцію INT 10h, що викликає зсув вікна вгору. При цьому в якості вікна вказувалася вся доступна екранна область, і вона зсувалася на кількість рядків, що дорівнює кількості рядків на екрані. Так як я не очікував, що функції роботи з вікнами взагалі хтось використовує, то й не поспішав їх реалізовувати. Результат виявився очевидним (вірніше, на екрані). Втім, до дивно деяких програм ще повернемося трохи далі ...

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

Ще раніше, під час процесу, я став застосовувати деякі елементи VHDL. Спочатку практично насильно - все-таки було бажання ще раз спробувати освоїти цю мову, а потім і тому, що в певних випадкахце було зручніше, ніж використовувати схемний дизайн. Навіть у самому відеоадаптері мені довелося вникнути в код – спочатку підтримувалося 43 (або щось біля цього) рядка, а мені потрібно було переробити на 25 рядків. І підтримку атрибутів я спочатку спробував зробити схемним дизайном, але раптом став усвідомлювати, що використовувати VHDL для цього може виявитися простіше. Природно, все рухалося з великими труднощами і використанням найпростіших конструкцій мови, але я раптом почав розуміти суть VHDL - поки зовсім трохи, але вже достатньо, щоб почати на ньому щось усвідомлено створювати, а не просто модифікувати вже наявне.

Моя метушня з VHDL не пройшла даремно, і через деякий час я зміг побачити щось давно і добре знайоме:

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

Наступним на черзі стояв контролер переривань 8259. Спочатку виникла думка спробувати використати вже наявний із якогось проекту, але жоден з них мені з різних причин не сподобався (або надто примітивні, або навпаки - я не розумів, як вони працюють, а документації не було). Була навіть спроба купити комерційну IP (у даному випадку IP це не Internet Protocol, а Intellectual Property), але виробники не хотіли морочитися з продажем цілої однієї штуки.

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

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

Нормального таймера 8254 у мене ще не було, для генерації переривань 18.2 Гц використовувався звичайний лічильник, який я підключив до контролера переривань. Поведінка комп'ютера показала, що начебто все працює - DOS завантажився без необхідності натискати на клавішу, а в NC нарешті пішов годинник. Здавалося, пройдено черговий етап, і можна сміливо рухатися далі.

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

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

З цією стороною схемотехніки в мене взагалі було погано. Я знав, що потрібно ставити більше блокувальних конденсаторів, і що довгі дроти- Це начебто погано. На цьому мої знання закінчувалися. Тому за порадою я знову звернувся на один із професійних форумів. Порад мені надавали багато, іноді було складно відокремити справді тямущі поради від радників за принципом «скажу все, що хоч трохи знаю на цю тему». Розписувати тут все це не буду – надто багато всього обговорювалося, тож це може бути темою окремої статті. За результатами обговорень моя плата обросла майже двома десятками блокувальних конденсаторів і повністю втратила початковий гламурний вигляд.

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

Наприкінці дороги чітко вимальовувався конкретний такий глухий кут, тому я почав перевіряти взагалі маячні ідеї. Зокрема, чи не збоїть сама мікросхема пам'яті? Для перевірки я згенерував прямо всередині FPGA модуль RAM, який використовував замість зовнішньої пам'яті. Чесно кажучи, на результат я не сподівався – просто робив усе, що спадало на думку. Але уявіть мій подив, коли після цього збої раптом зникли! Взагалі, я навіть якось не був готовий до цього, тому не зовсім розумів, як використовувати це знання. Те, що мікросхема пам'яті несправна, не вірилося навіть у цей момент. Також була майже повна впевненість, що я працюю з цією мікросхемою правильно – за сигналами, що управляють, там все простіше простого. Але факт залишався фактом - з мікросхемою збій гарантовано відбувався не пізніше, ніж за кілька годин тесту, з внутрішньою пам'яттю все пропрацювало без збоїв кілька днів, поки мені не набридло.

Для очищення совісті я все ж таки вирішив потестувати пам'ять зовсім іншою схемою, без використання моєї процесорної плати. У процесі обмірковування, як це краще зробити, мені раптом спало на думку - я зрозумів єдину істотну відмінність між використанням внутрішньої і зовнішньої пам'яті. Справа в тому, що зовнішня пам'ять була асинхронна, а внутрішня – частково синхронна, і для неї додатково був потрібний сигнал, за яким у внутрішньому буфері замикався адреса осередку, до якого відбувалося звернення.
Я взагалі не розумів, як це може ставитись до проблеми випадкових збоїв – за всіма діаграмами було абсолютно однозначно зрозуміло, що в мене адреса тримається набагато більше, ніж мінімально необхідно для пам'яті, тому теоретично це не могло бути причиною. Тим не менш, я тут же намалював у Quartus'і ще один регістр, подав на нього адресу і заклацнув його тим самим сигналом, який використовувався для внутрішньої пам'яті. Вихід регістру, природно, подав адресні лінії зовнішньої пам'яті. Розуміючи, що роблю повну нісенітницю, я запустив тест. І тест відпрацював успішно доти, доки я його не вимкнув наступного дня. Далі ще пару разів з регістром і без - чітко було видно, що наявність регістру прибирає збої повністю.

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

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

Справа була навіть не у відсутності готових рішень. Проблема була в тому, що мені потрібна була повна сумісність зі стандартним відеоадаптером на апаратному рівні - адже всі ігри працюють з графікою безпосередньо з залізом, без використання BIOS. Я зрозумів, що простіше зробити відеоадаптер з нуля, ніж намагатися переробити якийсь готовий. Та й, звісно, ​​самому зробити було набагато цікавіше.

Отже, пишемо свій власний CGA адаптер - навіть EGA на пару порядків складніше, тому поки на нього замахуватися не будемо. В принципі, трохи для початку я все-таки підглянув - виявив, власне, нариси модуля генерування VGA-розгортки. Але це було півтора десятки рядків, та ще й не до кінця працюючих. Отже, реально вони були використані як шаблон для початку писанини – морально так було легше.

Звичайно, CGA монітора у мене немає і не планувалося, тому ідея полягала у використанні режиму VGA 640х400, в яких чудово лягав CGA-шний режим 320х200 шляхом простого дублювання точок як по горизонталі, так і по вертикалі.
Взагалі графічний адаптер у мене вийшов несподівано легко – мозок наразі навчився мислити категоріями VHDL, плюс з'явилося невелике розуміння, що можна вимагати від VHDL, а чого не варто. Взагалі основний час налагодження у мене зайняв пошук абсолютно безглуздої помилки, пов'язаної з розрядністю чисел (дві такі проблеми наклалися один на одного і дали дуже кумедний варіант). В іншому ж я почав отримувати задоволення від того, як рядки в редакторі перетворюються на реальне «залізо» всередині FPGA і роблять саме те, що я хочу.

На самому початку, звичайно, адаптер вийшов далекий від досконалості та сумісності, але Checkit зміг впізнати його і навіть вивести першу тестову картинку:

До речі, Checkit виявився досить корисною програмою - багато речей він визначав досить хитрими способами, що змушувало робити всю конструкцію все більш PC-сумісною. Оскільки Checkit міг перевірити всі вузли і компоненти, те й сумісність тестувалася також всім частин системи.

Після виправлення самих явних ляпів (типу видимого на попередній фотографії дублювання крапки з попереднього байта) вдалося, на деякий час, знайти гру, яка начебто навіть заробила:

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

Спроби знайти працюючі ігри показали, що ігрові програми, які в більшості випадків працюють безпосередньо з «залізом», куди вимогливіші до сумісності, ніж якийсь NC або навіть QuickBasic. На щастя, FPGA надавала практично необмежені можливостіз виявлення фактів звернення програми до портів, адресам пам'яті і т.д. Особливо разом з тим, що BIOS я теж міг змінювати на власний розсуд, це давало відмінний механізм налагодження. До речі, рано чи пізно (вже не пам'ятаю точно, коли), запрацював і Turbo Debugger, що теж розширило арсенал налагоджувальних інструментів.

Відразу стало ясно, що треба робити хоча б мінімальний таймер 8253. Причому програми намагалися використовувати таймер не тільки для звуків (канал 2), а й активно перепрограмували канал 0, змінюючи таким чином частоту переривань від таймера, а також використовували цей канал для визначення часових параметрів.

Почитавши документацію до 8253, мені стало трохи сумно. Робити треба було багато, і не дуже цікаво. Вирішивши зайнятися цим якось потім, у той момент просто заліз на той самий opencores і стягнув пару модулів таймера. Один на Verilog, причому дуже спрощений, другий - на вигляд вкрай наворочений, та ще й на VHDL. На жаль, таймер на VHDL підключався шиною Wishbone – це відкритий стандарт для розробок на FPGA. З Wishbone я до цього ніколи не стикався, тому вирішив для початку використовувати модуль на Verilog'і, який за інтерфейсом виглядав простіше.

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

Далі ж мені довелося ухвалити кардинальне рішення. До цього моменту INT 10h я сам писав. У текстовому режимі з цим ще можна було змиритися, але необхідність підтримувати ці функції в графічних режимах мене засмутила. Враховуючи, що до цього моменту пристрасть до програмування на асемблері була практично задоволена (все-таки далося взнаки те, що свого часу вже довелося робити це в промислових обсягах), вчинив за принципом «Якщо гора не йде до Мухаммеда, то той посилає її нафіг ». А саме вирішив зробити свій CGA адаптер настільки сумісним за залізом, щоб оригінальний BIOS міг працювати з ним.

В принципі, особливої ​​складності не виникло – регістрів не дуже багато, їх функціональність вкрай проста. З неявних речей - довелося емулювати регістр стану, в якому знаходяться ознаки зворотного ходу променя кадрової та малої розгортки. Досить логічно виявилося, що багато програм (включно з BIOS) активно користуються цим регістром, щоб уникнути «сніг» при спробі одночасного звернення до відеопам'яті з боку процесора та адаптера.

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

На мою думку, виглядає досить красиво.

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

Останньою перешкодою на шляху до прийнятної сумісності з PC була, як не дивно, клавіатура. Хоча це було чи не перше, що я прикрутив до проекту, але з погляду сумісності там взагалі ще кінь не валявся. Основна проблема полягала в тому, що всі нормальні програмипрацюють з першим набором скан-кодів, який застосовувався ще IBM PC. А ось всі клавіатури, починаючи з PC AT, видають, як мінімум, другий набір скан-кодів, що дуже відрізняється від першого. Тільки контролер клавіатури всередині комп'ютера перетворює ці коди на оригінальний, перший набір, і все звичайні програмипрацюють саме з ним (навіть якщо ці програми начебто звертаються до клавіатури безпосередньо, не використовуючи BIOS). У мене ж, звичайно, ніякого контролера не було (до речі, в PC AT і навіть у пізніх PC XT для цього використовувався окремий мікроконтролер на базі 8051). Функції INT 09/16 у мене були реалізовані в мінімальному варіанті, а вже про пряму роботу програм з клавіатурою взагалі і мови не могло бути - вони (програми) просто не зрозуміли б жодного скан-коду.

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

Ще раз звернувшись на форум до знавців, я отримав неабияку кількість справді розумних порад. Мало того, моє розуміння самої концепції VHDL вкотре мало не докорінно змінилося (зокрема, з'явилося деяке розчарування). Основне – чудес не буває. VHDL (а також інші HDL) не зробить того, що неможливо зробити звичайним способом з наявних апаратних ресурсів. Якщо я пишу рядок, начебто правильний з погляду синтаксису мови, але навіть близько не уявляю, як це може бути реалізовано в залозі, то, швидше за все, воно і не буде реалізовано при компіляції. Як мінімум, не робитиме те, що від цього вимагається. І ще дуже важливо використовувати шаблони. Виявляється, багато конструкцій мови перетворюються на правильні апаратні вузли лише тоді, коли компілятор розпізнає відповідний шаблон. Певна гнучкість, звичайно, присутня, але все одно потрібно завжди пам'ятати про рекомендовані стилі опису тих чи інших вузлів.

Думаю, саме після цих розбірок я дійсно хоч зовсім трохи, але вже по-справжньому почав розуміти суть VHDL (та й Verilog на цей момент теж перестав бути зовсім незрозумілим). Чарівним чином підручники з цих мов раптом набули сенсу, і за словами ставала зрозуміла суть речей, що описуються.

Коротше кажучи, зробивши модуль перетворювача трохи менш красивим, але набагато правильнішим, отримав на його виході коди в першому наборі. Далі залишилося згодувати ці коди вже оригінальному обробнику INT 09h, і перевірити все тим же Checkit'ом правильність розпізнавання натискань клавіш. Отже, клавіатура також була майже 100% сумісна на апаратному рівні.

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

Як не дивно, все пройшло більш ніж гладко. Зараз уже навіть не пам'ятаю, чи треба було хоч щось налагоджувати, чи все запрацювало відразу після переробки. У будь-якому випадку, серйозних затиків точно не було, а ось працювати одразу стало набагато зручніше та ефективніше. Я відразу згадав поради низки знаючих людей, які настійно рекомендували мені з самого початку забути про схемний дизайн і відразу починати з VHDL/Verilog. До речі, щодо VHDL vs Verilog – будь ласка, не сперечайтеся зі мною, що краще/гірше, і чому я зупинився саме на VHDL. Давайте вважати, що мені просто так захотілося і це практично правда. Більше на цю тему я розмірковувати не буду.

При переході на VHDL був повністю перероблений останній модуль на схемному дизайні – інтерфейс SPI. Якщо пам'ятаєте, він забезпечував апаратний прийом/передачу лише одного байта, причому навколо цього потрібно було зробити низку підготовчих кроків. Разом з повільним процесором (і ліниво написаним INT 13h) це давало всього близько 35% від швидкодії оригінального жорсткого диска PC XT (згідно з Checkit). Так як я вже практично почував себе гуру VHDL і взагалі цифрової електроніки, то відразу вирішив писати не копію наявного інтерфейсу, а модуль, що забезпечує пакетну передачу.

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

Напевно, з урахуванням нового модуля можна було б серйозніше переписати INT 13h, але мені було ліньки, і я відбувся лише мінімально необхідною модифікацією. В результаті вийшло не дуже гарне і зовсім неефективне нагромадження, але все одно швидкість з новим модулем зросла практично в 5 разів:

Далі пішов частково нудний, частково захоплюючий процес запуску різних програм (насамперед ігрових) з метою з'ясування, чому вони не працюють (вірніше, що в моєму комп'ютері недостатньо сумісне). Про пошук причин можна написати окрему велику статтю, просто наведу кілька прикладів:
- У мене немає DMA. Виявилося, що нульовий канал DMA (що використовується для регенерації пам'яті на оригінальних PC) також використовується деякими програмами як лічильник визначення коротких часових проміжків. Довелося емулювати відповідну частину лічильників контролера DMA
- зазвичай (але не завжди) при читанні з неіснуючої області пам'яті або порту введення/виводу зчитується байт FF. У мене зчитувалося навпаки - 00. Це не сподобалося програмі, яка перевіряла таким чином (і більш нічим іншим) наявність джойстика, після чого вирішувала, що він є, і що затиснуті всі кнопки
- Найоригінальнішим способом визначення наявності CGA адаптера скористалася програма, яка записувала певне значення в регістр розташування курсору, потім зчитувала значення і звіряла з тим, що записувала (потім відновлювала оригінальне значення). Згідно з наявною у мене документацією, цей регістр начебто має бути тільки для запису, але переробив на читання/запис, після чого програма заспокоїлася
- не пов'язане з моїм комп'ютером - витратив купу часу на з'ясування причин зависання найпростішої старовинної гри Paratrooper. Виявилося що хоча гра і стара, але наявний у мене файл був стиснутий архіватором com/exe файлів, що саморозпаковується. Так ось, та частина, яка відповідала потім за розпакування програми під час запуску, містила команду, яка з'явилася лише, починаючи з 286 процесора. Неприємність полягала в тому, що дана командане сильно впливала на процес розпакування і псувала лише деякі байти (менше одного з тисячі). Мабуть, на ці розбирання я витратив найбільше часу.

Так, потихеньку, практично всі ігри, які я мав, почали запускатися і працювати без особливих проблем, у деякі з них я навіть спробував зіграти:

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

Хто міг подумати, що в цей момент на мене чекатиме велике відкриття… Пам'ятаєте, як я мучився зі збоями пам'яті, і змушений був запровадити проміжний регістр, необхідності якого не бачив у принципі? Так ось, на екрані осцилографа у мене виявилася така картинка:

Природно, перше, що кинулося в очі, так це страшний дзвін сигналу 2. Причому цей дзвін перейшов з кількісного параметра в якісний. Сигнал 6 формується однорозрядним лічильником, на вхід якого подано сигнал 2. Фактично, по кожному висхідному фронту 2 сигнал сигналу інвертується. Але на осцилограмі видно, що сигнал 6 переключився один раз не тільки по нормальному фронту сигналу 2, але по фронту найсильнішого "дзвону"! Тобто. у моїй схемі на деяких лініях дзвін був такий амплітуди, що міг викликати хибні перемикання логіки. Сказати, що я офігел – не сказати нічого. Навіть не вірилося, що при цьому мені вдалося досягти сталої роботи схеми ...

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

На жаль, на працездатність VHDL модуля таймера це не вплинуло – він мовчав. Повозившись ще деякий час, причину було виявлено в досить несподіваному місці – у самому модулі. Причому була вона досить прозаїчна (і часто зустрічається в програмуванні) - модуль неправильно обробляв одне з крайніх значень, а саме при дільнику 0 він замість поділу на максимальне значення(65536) не робив нічого. Я ж весь час перевіряв саме ініціалізацію каналу 0, який ініціалізується максимальним дільником, щоб отримати частоту 18.2 Гц. Коли я використовував дільник FFFF для експерименту, все запрацювало.

Я навіть зв'язався з автором модуля, який (автор) вже забув, що він цей модуль писав. Тим не менш, автор допоміг мені знайти конкретне місце, де була допущена помилка, і я навіть сяк-так спробував помилку виправити. Саме ця проблема вирішилася, але були виявлені інші, так що я поки що зупинився на першій версії модуля, на Verilog.

До цього моменту готовність моєї конструкції була такою, що я дозрів для головного експерименту. Справа в тому, що в далекому 86 році я читав статтю з журналу «Світ науки», який є російським перекладом американського журналу «Scientific American», в якій розповідалося про новітньому продуктікомпанії Microsoft - а саме про гру MS Flight Simulator. Враховуючи, що вже тоді я фанател від комп'ютерів, але при цьому твердо збирався стати льотчиком, можна зрозуміти, які емоції тоді вирували у мене в голові (та й в інших частинах тіла).

І ось зараз, майже через 30 років, у мене з'явилося невгамовне бажання запустити саме той історичний Flight Simulator на моєму комп'ютері. Інтерес підігрівався ще й тим, що начебто в ті часи для тестування на сумісність чи не офіційно використовувалися дві програми – Flight Simulator, а також Lotus 1-2-3. Говорилося, що вони так щільно використовують апаратні особливості комп'ютера, що якщо запрацювали ці програми, то все інше буде працювати.

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

До речі, загадкова зернистість картинки спочатку викликала в мене підозру - я відразу став думати про якийсь хитрий спосіб роботи з відеоадаптером, який у мене не підтримується. Насправді, як виявилося, таким чином Microsoft намагався отримати додаткові кольори, комбінуючи крапки з наявних кольорів. Повинен зауважити, що з огляду на дозвіл 320х200 результат був м'яко кажучи сумнівний.

Жодних проблем із запуском Lotus 1-2-3 теж не виникло, так що на цьому експеримент можна було б вважати закінченим. Тим не менш, я провів ще ряд невеликих доробок та підкруток, після чого почали запускатися і абсолютно нормально працювати взагалі всі програми, які я маю зараз. Єдиною новою функцією, яку я додав після цього, була EMS. Мені просто не давало спокою, що пропадає більше мегабайта доступної пам'яті(якщо чесно, то просто хотілося ще щось зробити), тому я знайшов опис плати EMS з драйвером і написав модуль, що емулює роботу цієї плати. Драйвер успішно пам'ять впізнав:

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

Були також деякі схемотехнічні зміни - прибраний повністю формувач тактової послідовності 8284 (вирішив, що можна без проблем прибрати його всередину FPGA, не завдавши жодної шкоди сумісності по сигналах шини) і регістр-клацанка на шині адреси/даних (також прибраний всередину FPGA). Швидка перевірка форми сигналів на новій платі показала, що сигнали стали практично ідеальними:

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

Щодо бюджету проекту, сказати щось певне практично неможливо. Для початку, що туди включити - тільки кілька мікросхем (маючи на увазі, що монтаж можна зробити МГТФ"ом, плата FPGA і прилади для налаштування і так є), або все, починаючи від надстрокового виготовлення плат, покупки відладкової плати FPGA спеціально для цього проекту , і закінчуючи не найдешевшим осцилографом?

Конкретні типи мікросхем і всього іншого в статті я начебто вказав, тому будь-хто охочий зможе подивитися, у що все це обійдеться саме в його варіанті. Звичайно, необов'язково використовувати саме DE2-115, для орієнтиру наводжу необхідні ресурси FPGA:

Слід врахувати, що тут ще є купа артефактів, що використовувалися для налагодження, та й сам код практично не оптимізувався.

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

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

Складання комп'ютера онлайн

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

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

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

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

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

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

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

Ключова одиниця продуктивності системи. Від вибору моделі залежить швидкість розрахунків, швидкодія, вибір завдань і не лише. На Ваш вибір, як недорогі продуктивні 2-4 ядерні рішення для дому, так і найпотужніші 6-12 ядерні процесоридля рендерингу та моделювання

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

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

Графічне ядро ​​– ключовий вузол для обробки даних, пов'язаних із прорахунком 3D-об'єктів. Це незамінна складова будь-якого ігрового комп'ютера чи графічної станції. Потужні відеокарти вимагають якості блоку живлення, оскільки можуть споживати до 300Вт енергії.

Механічний накопичувач є постійним сховищем всієї інформації на комп'ютері. Його характеристики визначаються швидкістю обертання шпинделя (5400/7200rpm) та ємністю. Останній показник може коливатися від 500 ГБ до 10 ТБ. Ви самі визначаєте собі завдання, покладені на HDD.

SSD

Твердотільні накопичувачі (Solid State Disk) – пристрої для зберігання даних з позамежною швидкістю читання та запису інформації, які істотно швидше за звичайний HDD. Їх також відрізняє безшумність та відсутність механічних компонентів, здатних вийти з ладу.

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

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

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

МОДДІНГ

Додаткові опції

PCI/PCI-E контролери LPT, COM, 1394 FireWire, SATA, USB 3.0. Пристрої для підключення будь-яких карт-пам'яті. Bluetooth адаптери. Регулятори обертання вентиляторів, класичні та з сенсорним керуванням. Додаткові USBконтролери на передню панель 3,5”; 5,25“

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

Периферійне обладнання

Монітор – ваше вікно у світ інформації. TN, PLS, IPS-матриці з LED-підсвічуванням, затримкою від 1 мс та здатністю відображати картинку на екрані з діагоналлю 22, 24, 27, 30 і більше дюймів. Бажаєте отримати більше відчуттів від улюбленої гри? Придивіться до геймерських моделей із частотою оновлення 120, 144 і навіть 240 Гц.

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

Оптична або лазерна миша – незамінний компонент ПК, за допомогою якого ви відкриватимете папки, переміщатимете документи, серфіте інтернет, взаємодієте з програмами та іграми. Провідні або бездротові моделі. Суворі офісні або геймерські з додатковими клавішами. Виберіть модель під свою долоню.

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

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

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

Для тих, хто вирішив зібрати комп'ютер в інтернет-магазині «ЖЕЛЕЗА.НЕТ», діє постійна пропозиція – складання комп'ютера, перевірка, діагностика, налаштування та стрес-тестування комплектуючих безкоштовно!

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

Зібрати оптимальну збірку ПК за допомогою конфігуратора онлайн

Безперечною перевагою нашого конфігуратора ПК є можливість підбору як основних апаратних компонентів, а й периферійних пристроїв. В інтернет-магазині «ЖЕЛЕЗА.НЕТ» представлені як нові, так і актуальні моделімоніторів, акустичних систем, клавіатур та мишок. Підключайте фантазію, купуючи елементи майбутнього комп'ютера єдиному стилі. Наша команда фахівців не дозволить вам заплутатися у різноманітності товарів. Зібрати комп'ютер з перевіркою сумісності не складе особливих труднощів для фахівців компанії.

Підібрати комплектуючі? Що може бути простіше

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

Відкрийте в собі задатки системного адміністратора

Самостійне складання ПК навчить вас розбиратися в компонентах та їх характеристиках, що суттєво полегшить завдання у наступних апгрейдах. Ви зможете відсіювати комплектуючі, що не відповідають вашому сокету і чіпсету, знаходити актуальні моделі товарів і вибудовувати плацдарм для подальшої модернізації ПК. Наш конфігуратор ПК з перевіркою сумісності сам прибере невідповідні деталі, якщо ви захочете зібрати комп'ютер «з нуля», але не маєте достатнього досвіду для цих цілей. Пам'ятайте, що кожна система потребує особливого підходу: Домашній (мультимедійний) – гарна відеокарта, велика кількістьпам'яті, якісна акустична складова; Офісний – швидкий процесордля оперативної обробкиданих, ємний HDD; Ігровий – потужна графічна підсистема, ЦП з можливістю розгону (і відповідна материнська платапід нього), велика кількість ОЗП, швидкий SSD. Робоча станція для обробки графіки – все ідентично до ігрового ПК, але з ще більшим розміром оперативної пам'ятіі значним сховищем даних (Raid-масив з кількох HDD).

Переваги онлайн-конфігуратора інтернет-магазину «ЖЕЛЕЗА.НЕТ»

За допомогою конфігуратора на нашому сайті ви зберете ПК для будь-яких потреб. Вартість системного блоку відображається автоматично, тому завжди можна підібрати більш дешеву або дорогу альтернативу в залежності від закладеного раніше бюджету. Не обов'язково додавати в кошик усі елементи, що представлені в категоріях. Можливо, у Вас вже є HDD, системна плата чи GPU. Залишилося лише вибрати запчастини, що бракують, орієнтуючись на вже наявні, зібравши оптимальну за всіма параметрами систему. Бажаєте зберегти конфігурацію? Немає нічого простішого. Повернетеся до неї, як тільки з'явиться час доробити або переробити складання.

Допомога фахівців з клацання пальця

Виникли труднощі на етапі віртуального складання, або не знаєте, який процесор підійдедля ваших завдань? Зверніться до команди спеціалістів інтернет-магазину «ЖЕЛЕЗА.НЕТ» будь-яким зручним способом: пошта, телефон, месенджери, соціальні мережі. Задайте питання, що цікавить, і отримайте на нього вичерпну відповідь. Збираючи систему за допомогою конфігуратора ПК, ви не переплачуєте додатково за складання, діагностику, налаштування та тестування комп'ютера – усі ці послуги ми надаємо безкоштовно. Ви завжди знаєте, на що витратили гроші. Зробіть замовлення вже зараз і станьте власником нового системного блоку, а може й повністю готового комп'ютера в зборі. Ми завжди будемо раді допомогти.

Не слід забувати, що хоча IBM PC - сумісні комп'ютери і є найбільш популярними, займаючи левову частку ринку, існують і динамічно розвиваються косп'ютери, в яких процесорів лінійки х86 немає. Зокрема, комп'ютери, не сумісні з IBM PC - ноутбуки та кишенькові персональні комп'ютери (КПК) з процесорами розробки компаній Motorola і IBM, ігрові приставки марки Playstation, мають зовсім іншу внутрішню архітектуру і збираються на чіпах, які розробляються спеціально для них. Хоча зовні, наприклад, відрізнити ноутбук на процесорі корпорації Intel від фірмового ноутбука Apple, В якому використаний процесор корпорації Motorola, практично неможливо.

Крім того, слід згадати про ігровій приставці Playstation 3, яка восени 2007 року з'явилася у масових кількостях. У конструкції використовується 9-ядерний процесор Cell розробки корпорації IBM. При скромній ціні та габаритах її можливості створювати на екрані монітора або телевізора віртуальний світ значно вищий, ніж у найнавороченіших персональних комп'ютерів із процесорами лінійки х86.

Структурна схемамікропроцесора

Структурну схему базової моделі мікропроцесора наведено на рис. 1.

Мал. 1. Структурна схема мікропроцесора

Умовно мікропроцесор можна розділити на дві частини: виконавчий блок (Execution Unit – EU) та пристрій сполучення із системною магістраллю (Bus Interface Unit – ВIU).

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

Вісім регістрів виконавчого блоку МП (АХ, ВХ, СГ, DX, SP, ВР, SI, DI), що мають довжину, рівну машинного словаділяться на дві групи. Першу групу складають регістри загального призначення: АХ, ВХ, СГ і DX, кожен з яких є регістрову пару, складену з двох регістрів довжиною 0.5 машинного слова.

Акумулятор, або регістр АХ, складається з регістрів АН та AL. Регістр бази (Base Register) ВХ складається з регістрів ВН та BL. Лічильник (Count Register) СХ включає регістри СН та CL. Регістр даних (Data Register) DX містить регістри DH та DL. Кожен із коротких регістрів може використовуватися самостійно або у складі регістрової пари. Умовні назви (акумулятор, регістр бази, лічильник, регістр даних) не обмежують застосування цих регістрів - ці назви говорять про найчастіше використання їх або особливості використання того чи іншого регістру в тій чи іншій команді.



Другу групу складають адресні регістри SP, BP, SI та DI (у старших моделях кількість адресних регістрів збільшено). Ці регістри активно використовуються по функціональному призначеннюі в інших цілях їх застосовувати не рекомендується. Основне їхнє призначення - зберігати числові значення, що реалізуються при формуванні адрес операндів.

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

Керуючі регістри BIU: CS (покажчик командного сегмента), DS покажчик сегмента даних), SS (покажчик сегмента стека), ES (покажчик додаткового сегмента) та ін служать для визначення фізичних адресОП - операндів та команд. Регістр IP (Instruction Pointer) є вказівником адреси команди, яка вибиратиметься в конвеєр команд як чергова команда (у вітчизняній літературі такий пристрій називається лічильник команд). Конвеєр команд МП зберігає кілька команд, що дозволяє під час виконання лінійних програмпоєднати підготовку чергової команди із виконанням поточної.

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

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

початок

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

На початку своєї історії компанія отримала величезне замовлення від Міністерства статистики і завдяки цьому відразу зайняла суттєву позицію на ринку. Втім, засновнику та власнику через проблеми зі здоров'ям все ж таки довелося продати фірму відомому фінансовому генію Чарльзу Флінту. Мільйонер заплатив за компанію величезну на той час суму 2,3 млрд. доларів.

Поява IBM

Отримавши контроль над компанією TMC, Чарльз Флінт негайно розпочав її об'єднання з іншими активами, наприклад, ITRC та CSC. У результаті створено прообраз сучасного «блакитного гіганта» - корпорація CTR.

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

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

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

IBM та Друга світова війна

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

На території США в роки війни корпорація здебільшого займалася постачанням фронту державне замовлення. Вона зайнялася виробництвом прицілів для метання бомб, гвинтівок, деталей двигунів та інших необхідних військових товарів. При цьому глава корпорації тоді встановив номінальний розмір прибутку на 1%, який вирушав не акціонерам, а на потреби фондів допомоги.

Початок ери комп'ютерів

Перший IBM-комп'ютер був випущений у 1941-1943 роках та отримав назву «Марк-I». Важила машина значні 4,5 тонни. Після проведення тестування її офіційний запуск відбувся лише у 1944 році, після перенесення до Гарвардського Університету.

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

Співпраця міжнародної корпорації та головного розробника виявилася вкрай невдалою. IBM-комп'ютери продовжила розробляти без нього. У результаті 1952 року компанія випустила першу лампову ЕОМ.

Наприкінці 1950 р. були створені перші IBM-комп'ютери на основі транзисторів. Саме завдяки цьому удосконаленню вдалося підвищити надійність. обчислювальних машинта створити на їх основі першу систему оборони від ракетного удару. У цей же час з'являється перший серійний комп'ютер IBM жорстким диском. Щоправда, накопичувач, показаний радянському лідеру в 1958 році, займав дві великі шафи і був об'ємом 5 Мбайт. Ціни IBM на нього встановила теж чималі. Перший прообраз жорсткого диска коштував близько 50 000 доларів за цінами на той час. Але це був лише початок.

Перша поява IBM System

В 1964 були представлені нові IBM-комп'ютери. Вони значно змінилися та задали стандарти на багато років уперед. Сімейство отримало назву IBM System/360. Це були перші машини, які дозволяли поступово нарощувати обчислювальну потужністьза рахунок зміни моделі та при цьому не змінювати програмного забезпечення. Саме в цих мейнфреймах вперше почала застосовуватися технологія мікрокоду.

Створені комп'ютери IBM отримали дуже вдалу архітектуру, яка стала фактичним стандартом на багато років. І сьогодні серія System Z, яка є логічним продовженням лінійки System/360, застосовується дуже активно.

Перший ПК

В IBM персональні комп'ютери не розглядали як перспективний ринок. Однак у 1976 році представили першу настільну ЕОМ серії IBM 5100. Вона призначалася більше для інженерів та мало підходила для офісної роботи чи персонального використання.

Перший масовий персональний комп'ютер «блакитний гігант» представив лише 1981 року. Власне кажучи, у компанії не надто сподівалися на його успіх. Саме тому більшість його складових придбали в інших компаній. Нова ЕОМ була включена до сімейства IBM 5150 і отримала назву PC.

Популярність IBM PC

Новий процесор від компанії Intel вимагає і яку дуже вдало запропонувала молода компанія, заснована Біллом Гейтсом.

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

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

Втім сама IBM на ринок домашніх комп'ютерів практично не потрапила. Початкова модель IBM PC була досить дорогою. Плюс до цього базового комплекту потрібно придбати контролер гнучких дисків і самі накопичувачі. Конкуренти на цьому тлі виглядали перспективніше.

Тим не менш, компанія спробувала запускати низку моделей і для домашніх користувачів. Одна з них під назвою IBM PCjr увійшла до 25 найгірших комп'ютерних пристроїв. Але виробництво цієї моделі було швидко припинено.

У бізнес-сегменті IBM зазвичай почувалися чудово, зокрема і ринку персональних ЕОМ. Це досягалося високою впізнаваністю бренду, продуманим маркетингом. Результатом успіху стала поява машин IBM PC/XT та IBM PC/AT.

Перший ноутбук

Незважаючи на достатньо погане початкове ставлення до персональних комп'ютерів, гігант був змушений задуматися. Насамперед, на це вплинув приголомшливий успіх IBM PC. До речі, піврічний план продажу першого персонального комп'ютера було виконано менш як за 30 днів.

IBM Convertible надійшов у продаж на початку 1986 року та, незважаючи на досить скромні характеристики, вироблявся до 1991 року. З нововведень цей пристрій був першим ПК від гігантської корпорації з 3,5” дисководом.

90-ті роки

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

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

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

Одночасно компанія виробляла серію ЕОМ, сумісних із минулим поколінням під назвою PS/1, а пізніше – Aptiva.

Це були останні персональні комп'ютери, які виготовляли «блакитний гігант». До 1996-1997 року виробництво машин цього сегмента ринку було згорнуто.

2000-і та остаточний відхід з ринку ПК

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

У 2004 році корпорація прийняла непросте рішення, в результаті весь бізнес з виробництва персональних ЕОМ та ноутбуків було продано китайською. компанії Lenovo. Сама компанія зосередилася на набагато цікавішому для гіганта ринку серверів та послуг підтримки. Дещо пізніше IBM продала й інші підрозділи, що пов'язують її з виробництвом ПК, наприклад, що займався випуском жорстких дисківвідділ перейшов під контроль HITACHI.

Багаторічна історія IBM дозволила компанії нагромадити величезний досвід у створенні комп'ютерної техніки та програмного забезпечення. Сьогодні, навіть незважаючи на вихід з ринку ПК, компанія має досить сильний вплив на розвиток усієї галузі.