Comments 66
N лет назад курсовая была — спроектировать процессор на AHDL'e.
Собственно, я написал простенький 8-битный, 13-командный, причём тестовая программа — рекурсивное вычисление факториала (да-да, там был и стек :) ).
В общем, ничего сложного в этом не вижу :)
Собственно, я написал простенький 8-битный, 13-командный, причём тестовая программа — рекурсивное вычисление факториала (да-да, там был и стек :) ).
В общем, ничего сложного в этом не вижу :)
Ну да, ничего сложного и нет. На AHDLе, кстати, немного проще. Я на нем недавно brainfuck-процессор писал, управился всего за пару часов (при том что AHDL знаю на уровне дисциплины провиницального университета, то есть не знаю).
Ох, где моя тетрадка из детства, когда я тоже пытался схемы процессоров рисовать )
И еще одна тетрадка была, где я записывал от руки программы на бейсике (не магнитофона, ни дисковода не было)
И еще одна тетрадка была, где я записывал от руки программы на бейсике (не магнитофона, ни дисковода не было)
Ностальгия… У меня были горы таких тетрадок.
оказывается, я не один такой =)
И вас даже не трое таких)
У меня тоже были тетрадки с программами на бейсике.
Писал от руки.
У меня тоже были тетрадки с программами на бейсике.
Писал от руки.
А я как-то все лето в детстве прожил на даче. На входе: книжка по Perl, на выходе: стопка листов с программами. Правда так их и не запускал потом.
Я помню ещё из журнала выписывал программы и просто справочную инфу (таблицу ASCII-кодов, например) в общую тетрадку. Да уж, было время. Недавно нашел, чуть не прослезился от умиления )
Тоже в детстве были такие тетрадки, туда записывал листинг программ на бейсике. Строки номеровал канонически: 10, 20, 30… и т.д. Очень восхищался таким правилом, подсмотренным в «Науке и жизни», ведь при наложении «патчей», чтобы ввести недостающие строки, достаточно было их подклеить на бумажку между существующими, и дать номера помельче. Если блок выкидывался, заклеивал строки белой бумагой. После нескольких таких попыток необходим был «рефакторинг», т.е. переписать начисто программу в другую тетрадку, поскольку патчи торчали отовсюду и были похожи на макароны.
Сразу возникает вопрос: «Как вы раньше жили?», но лучше его облачить в более правдивую форму: «Почему у моего поколения все есть и мы такие тупые?» :-)
Ну тут же прямая взаимосвязь )
Уважаемый, мы такие же как и вы.
Хотя да, взаимосвязь есть. У меня был Спектрум и Б3-21. А у многих моих друзей был Pentium II. Но их на Хабре я не видел почему-то.
Хотя да, взаимосвязь есть. У меня был Спектрум и Б3-21. А у многих моих друзей был Pentium II. Но их на Хабре я не видел почему-то.
Тут даже дело не в Спектруме, а в том, что Вы от него хотели получить, хотя и в нем тоже :-)
Да ладно, я хотел то же самое, что было у друзей.
Хотел игры. Приходилось писать.
Потом у меня была 80486я машина с EGA-монитором (ах, как я скучаю по ней), на которой не работали Windows 3.11 и Windows 95 (хотя однажды Windows 3.1 удалось установить). И я, глядя на картинки в книжке Фигурнова, делал свою «Windows». Вот время было…
Хотел игры. Приходилось писать.
Потом у меня была 80486я машина с EGA-монитором (ах, как я скучаю по ней), на которой не работали Windows 3.11 и Windows 95 (хотя однажды Windows 3.1 удалось установить). И я, глядя на картинки в книжке Фигурнова, делал свою «Windows». Вот время было…
Трудное детство, ZX Spectrum без магнитофона в одной розетке с холодильником.
Откуда вы узнали?
У меня в телевизоре было что-то неправильно переделано, и он выдавал со Спекки инвертированную картинку. Было забавно. Смотрел на жизнь в негативе. Трудное детство.
У меня была хорошая, качественная черно-белая картинка диагональю дюймов 7. Хотел бы я посмотреть на настоящий Спекки с цветным телевизором…
О, навели на еще одно ностальгическое воспоминание: все детство играл в Dendy на телевизоре Электрон, правда вот ДМВ блок был битый и не выдавал цветную картинку ни в PAL ни в NTSC (это потом уже выяснилось, когда видик появился). Так что все игры были черно-белыми…
Если быть точным, то RISC — это не малый набор комманд, а упрощенный набор. Т.е. каждая комманда делает как можно меньше. Поэтому для того, чтобы сложить два числа в памяти в RISC архитектуре надо сначала загрузить lданные в регистры процессора, сложить их и выгрузить обратно в память. Таким образом, то, что в архитектуре CISC делается одной коммандой, в RISC потребует 3 и более.
У некоторых RISC архитектур комманд больше, чем у множества CISC.
Достаточно хорошо об этом написано в http://ru.wikipedia.org/wiki/RISC
У некоторых RISC архитектур комманд больше, чем у множества CISC.
Достаточно хорошо об этом написано в http://ru.wikipedia.org/wiki/RISC
Да, именно так. Стоит ли исправить статью, как думаете?
Думаю, что для начала стоит определиться с тем, что понимется под RISC архитектурой.
Разбирать конкретные проявления данной архитектуры в виде конкретным процессоров, думаю бессмысленно. Хотелось бы выявить что отличает RISC от CISC.
Первое: RISC всегда имеет фиксированную длину комманд.
Второе: Отсутствие микропрограмм внутри RISC процессора. Тогда как CISC преимущественно выполняет микропрограммы.
Разбирать конкретные проявления данной архитектуры в виде конкретным процессоров, думаю бессмысленно. Хотелось бы выявить что отличает RISC от CISC.
Первое: RISC всегда имеет фиксированную длину комманд.
Второе: Отсутствие микропрограмм внутри RISC процессора. Тогда как CISC преимущественно выполняет микропрограммы.
Вот еще одно мнение с отсылкой на первоисточник :)
http://forum.ixbt.com/topic.cgi?id=36:89:1#1
http://forum.ixbt.com/topic.cgi?id=36:89:1#1
Не совсем. RISC — ето именно уменьшений набор команд. Команди делаются более ортогональние, редко используемие команди — убираются. Про загрузить-посчитать-сохранить — ето Load-Store архитектура и ортогональна RISC. Например — ARM — Load-Store RISC. MSP430 — RISC, но не Load Store.
Тоже не совсем верно. Бывает и наоборот, когда одной инструкцией на RISC делается то, для чего на CISC потребуется 5.
Сравните, например, ARM:
и x86:
Сравните, например, ARM:
addeq R0, R1, R2, lsl R3
и x86:
jnz @skip mov eax, ebx mov ecx, esi shl eax, cl add eax, edx @skip:
Хехе, схемота, родимая)
У нас на 12ой кафедре в МИФИ была курсовая, длившаяся год, на которой мы проектировали простенький процессор.
Это было самое интересное за весь период обучения.
Кому интересно, она даже сохранилась: вот она, вот она
У нас на 12ой кафедре в МИФИ была курсовая, длившаяся год, на которой мы проектировали простенький процессор.
Это было самое интересное за весь период обучения.
Кому интересно, она даже сохранилась: вот она, вот она
Старайтесь избегать включения-выключения отдельных элементов путем прерывания тактового сигнала (т.н. clock gating). Схема, может прекрасно работать в эмуляторе, но когда придется учитывать задержки срабатывания логики, возникнет ситуация, что элементы тактируются несинхронно. Возможны многочисленные трудноуловимые баги.
Недаром все регистры, счетчики и т.д. имеют вход разрешения работы. Чтобы включить-выключить блок, используйте его.
Недаром все регистры, счетчики и т.д. имеют вход разрешения работы. Чтобы включить-выключить блок, используйте его.
Сейчас у меня как раз курсовое проектирование процессора согласно регламенту архитектуры IA-32bit. Статья — самое то. Огромное спасибо.
IA-32? Жестоко с вами поступили, однако.
На opencores.org есть проект процессора Zet: opencores.org/project,zet86
Может поможет. А так, могу только посочувствовать.
Может поможет. А так, могу только посочувствовать.
Чем же вы преподавателя обидели?
Вариант, что сам преподаватель не ведает что творит даже представить боюсь.
Вариант, что сам преподаватель не ведает что творит даже представить боюсь.
Возможно я что-то не так сказал — тогда извиняюсь.
Поясню: 32-х разрядное АЛУ собираем на 8 МПС К1804ВС2, 32-х разрядные регистры (около 10-15) собираем на 4 К1804ИР2. Это что касается принципиальной эл.схемы. В сумме около 150 микросхем вышло.
Сейчас я на стадии разработки алгоритмов, где всё организуется как раз таки на логических элементах, поэтому статьи такого рода на вес золота.
Очевидно, мой проект попроще будет, т.к. берутся «черные ящики» с выводами. Хотя это только предположение.
Поясню: 32-х разрядное АЛУ собираем на 8 МПС К1804ВС2, 32-х разрядные регистры (около 10-15) собираем на 4 К1804ИР2. Это что касается принципиальной эл.схемы. В сумме около 150 микросхем вышло.
Сейчас я на стадии разработки алгоритмов, где всё организуется как раз таки на логических элементах, поэтому статьи такого рода на вес золота.
Очевидно, мой проект попроще будет, т.к. берутся «черные ящики» с выводами. Хотя это только предположение.
IA32 это определенный набор команд (100-150) с огромной кучей архитектурных особенностей, начиная просто режимами работы, заканчивая MSR'ами.
Так что это задача даже не на год, а на десятилетия :)
Так что это задача даже не на год, а на десятилетия :)
Если бы в университете объясняли так же как и вы, я бы обожал учиться! :)
А почему обозначения элементов не отечественные, а зарубежные?
habrahabr.ru/blogs/DIY/118919/ — вот это процессор своими руками :-)
Интересная статейка.
Помню с большим интересом изучал как сделали процессор на клеточном автомате типа игры жизнь. Он считает простые числа и рисует их на небольшом жк-экранчике.
От автора есть подробное описание как сделать ОРы, КСОРы регистры и прочую логику, а потом из этого склепать проц )
golly.sourceforge.net/gtk-primes.png
Помню с большим интересом изучал как сделали процессор на клеточном автомате типа игры жизнь. Он считает простые числа и рисует их на небольшом жк-экранчике.
От автора есть подробное описание как сделать ОРы, КСОРы регистры и прочую логику, а потом из этого склепать проц )
golly.sourceforge.net/gtk-primes.png
Давно искал подобную статью, во времена электротехники в институте — до процов там не дошли толком.
Вопрос не совсем про разработку собственного процессора, но по смежной теме — эмуляции цифровых схем.
Может быть кто-то может поделиться ссылками на литературу описывающую алгоритмы/подходы используемые для реализации компьютерных моделей цифровых цепей? (т.е. описывающую алгоритмы по которым работает Logisim).
Может быть кто-то может поделиться ссылками на литературу описывающую алгоритмы/подходы используемые для реализации компьютерных моделей цифровых цепей? (т.е. описывающую алгоритмы по которым работает Logisim).
Литературу подсказать не могу, к сожалению, но пару слов сказать — это можно.
Вариантов много. Можете моделировать на уровне «цифровая схема — это такой черный ящик». Эти черные ящики очень легко моделируются, а потом представляются графически (навроде блок-схем).
Можете моделировать на уровне «цифровая схема — это такая схема из транзисторов и прочей требухи». Тогда открываете справочник-учебник по МРЭС, читаете внимательно про математические модели резисторов, катушек, конденсаторов, диодов и транзисторов, а потом используя эти модели и хрестоматийные схемы логических устройств, делаете свой велосипед.
Второй вариант, как мне кажется, предпочтительнее. Он учитывает частотные и вольт-амперные характеристики элементов. То есть, например, можно будет реально наблюдать задержку в наносекунды при перекдючении элемента (а это очень важно)
Вариантов много. Можете моделировать на уровне «цифровая схема — это такой черный ящик». Эти черные ящики очень легко моделируются, а потом представляются графически (навроде блок-схем).
Можете моделировать на уровне «цифровая схема — это такая схема из транзисторов и прочей требухи». Тогда открываете справочник-учебник по МРЭС, читаете внимательно про математические модели резисторов, катушек, конденсаторов, диодов и транзисторов, а потом используя эти модели и хрестоматийные схемы логических устройств, делаете свой велосипед.
Второй вариант, как мне кажется, предпочтительнее. Он учитывает частотные и вольт-амперные характеристики элементов. То есть, например, можно будет реально наблюдать задержку в наносекунды при перекдючении элемента (а это очень важно)
Событийные модели. Посмотрите, например, семантику VHDL.
На счёт счётчика. На сколько я помню, флаг переполнения ставится только при обнулении (переход 11→00), а не по достижении 11. И если имеем 00 с флагом переполниния, значит таки оно произошло.
А у вас почему-то по достижении 11.
А у вас почему-то по достижении 11.
К сожалению, память вас подводит. В сумматорах флаг переполнения включается при обнулении, а вот в регистрах и счетчиках — при достижении наивысшего значения.
поправьте, если что не так. статья на васме
может мы о разных флагах говорим.
может мы о разных флагах говорим.
Переполнение регистра процессора и переполнение регистра или счетчика как дискретного элемента — это несколько разные понятия. Если вы возьмете реальный или виртуальный (например, в Logisim) счетчик с выходом переноса, то легко убедитесь, что на выходе P реально 1, когда в регистре максимальное значение. Я тоже был удивлен, когда узнал об этой особенности счетчиков и регистров.
По поводу счетчиков. Вы оба правы. Есть счетчики с отдельным выводом переноса, есть без.
74LS93 (КР1533ИЕ5) — двоичный счетчик. Отдельного выхода переноса не имеет, что не мешает его каскадировать.
74AC193 (КР1554ИЕ7) — реверсивный двоичный счетчик. Имеет два выхода тактовых сигналов прямого и обратного переноса. Устанавливается когда на всех выходах устанавливается высокий уровень.
74LS93 (КР1533ИЕ5) — двоичный счетчик. Отдельного выхода переноса не имеет, что не мешает его каскадировать.
74AC193 (КР1554ИЕ7) — реверсивный двоичный счетчик. Имеет два выхода тактовых сигналов прямого и обратного переноса. Устанавливается когда на всех выходах устанавливается высокий уровень.
Ничего не понял, но очень интересно.
Про азы булевой алгебры понятно, более чем, даже с картинками. А потом идет переход в схему, которую собирали где и на чем?
Sign up to leave a comment.
Процессор