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