Comments 135
Потом тоже не понял, но проводков больше — ещё лучше, вот тут:
Понял!)
Круто) не догадался бы в такой минимализм
Потом, прикрутить SPI-озу и пзу к Z80, это совсем нетривиальная задача )
Какой ещё Z80
«Слона-то я и не приметил»©
Наверное, больше него мне нравится только 486й чипА что в нём интересного? 386 на стероидах. Вот 386 после 286 была вещь, да ведь по факту до сих пор на нём сидим.
Но это религиозные споры ))
Для меня и 386 и 486 — великолепные процессоры, просто 386 у меня был, когда я был подростком, а 486 появился только когда я начал хлам собирать. От этого такое отношение
по поводу великолепных процессоров можно, конечно, спорить. при наличии нужного количества пива, спорить можно с пеной у рта…
для Вас это 80386 и i486 (заметьте, кстати, разницу в официальных названиях!), а для меня это Am2900 и Am29000. с последними я познакомился еще в лохматом 1982 году, а Intel дошли до 32-битового уровня только в 1985м.
также многие молятся на Intel и с потолка объявляют Intel Hyperthreading прорывом и открытием века. кое-кто знает про первенство IBM Power4 Symmetric Multithreading, но мало кто видел зачатки последнего в 3м и 4м изданиях IBM RS64 (a.k.a. Power3).
а настоящими не просто великолепными, а велики процессорами стоило бы признать System/360, CDC 6600 и Cray-1. это титаны, наработками которых пользовались и IBM POWER, и Intel x86, и эти ваши ARM телефончики.
вот там уже можно говорить о религии ;)
насчет Am29000 сам в растеряности. читал о 2900 и 29000 в книге, вышедшей в оригинале в 1981 году. педивикия утверждает, что это другой процессор конца 80х. те, о которых читал, являлись секционными, Am2900 состоял из 4-битовых секции попроще, а секции Am29000 были 2-битовыми, но посложнее и побогаче. мой возторг им был вызван тем, что у Intel-а только появились 16-битовые процессоры, а до этого из секции можно было соорудить хоть 32-битовый. нехилое достижение, учитывая ограничения S/360 и даже S/370. также по сути это первые процессоры, позволяющие реализовать то, что потом назовут VLIW.
но да, великолепные это религия. у каждого своя.
Ну и у Интел 486й — это не первый 32х битник. iAPX — это начало 80х как раз.
i960 — это середина 80х. Он как раз был конкурентом 29000му.
педивикия тоже указывает, что 2900 выпущен еще в 1975 году, так что все равно опережает и iAPX 432, и IBM 801. i960 намного позже. сперва i860, но оба позже Am2900. в последнем впервые увидел микропрограммирование, хотя не знаю первый ли ввел оного. в комплекте было ПЗУ, по адресам которого приходили внешние команды, а на выходах данных получались команды секции. часть адресов можно было оставить внутренними и крутануть цикл или микропрограмму. что с тем Am29000, что я помню, не знаю, но не суть.
80386 и i486 (заметьте, кстати, разницу в официальных названиях!)
Можете уточнить, в чём именно разница?
На первом чипе нанесены бренд i386 и модель A80386DX-20; на втором — бренд i486 и модель A80486DX-25.
несмотря на годы авторского права, показанные Вами корпусы более поздного производства. в начале только 80386, потом с появлением 80386SX прежную модель переименовали на DX. от аналогии с 8086/8088 и 80186/80188 пришлось отказаться, поэтому буквы. аналогично сперва появился i486 на 20 MHz, а потом с появлением i486SX также переименовывают оригинал на DX. так что сами надписи на корпусе доказывают более поздние модели.
работал на машинках с 80386 и с i486 без никаких DX-ов, видел лично.
Но по факту это был абсолютно тот же процессор
Ничосе заява!
И 486 и 68040 были знаковыми процессорами. Мейнстрим CISC довели до возможности выполнения команды за такт, что до этого было только на RISC, путём глубокой конвейеризации. Также на кристалл переехал FPU, который до этого был внешней микросхемой.
Вот тут подробно об отличиях 386 и 486.
В рувики это указано без ссылки, и в разделе отличий как раз не указано; в английской ничего подобного нет.
В англоязычной вики в сноске «The 386, 286, and even the 8086 all had overlapping fetch, decode, execution (calculation), and write back; however, tightly pipelined usually means that all stages perform their respective duties within the same length time slot. In contrast loosely pipelined implies that some kind of buffering is used to decouple the units and allow them to work more independently. Both the original 8086 and the x86-chips of today are „loosely pipelined“ in this sense, while the 80486 and the original Pentium worked in a „tightly pipelined“ manner for typical instructions. This included most „CISC“ type instructions as well as the simple load/store-free „RISC-like“ ones, although the most complex also used some dedicated microcode control.»
И еще у Э Таненбаума в «Архитектура компьютера» 4-е издание
«Во-первых, компьютеры RISC были несовместимы с другими моделями, а многие компании вложили миллиарды долларов в программное обеспечение для продукции Intel. Во-вторых, как ни странно, компания Intel сумела воплотить те же идеи в архитектуре CISC. Процессоры Intel, начиная с 486-го, содержат ядро RISC, которое выполняет самые простые (и обычно самые распространенные) команды за один цикл тракта данных, а по обычной технологии CISC интерпретируются более сложные команды. В результате обычные команды выполняются быстро, а более сложные и редкие — медленно. Хотя при таком «гибридном» подходе работа происходит не так быстро, как у RISC, данная архитектура имеет ряд преимуществ, поскольку позволяет использовать старое программное обеспечение без изменений»
А 486-е за счет RISC ядра, которое наружу выглядело CISC
Это неправда. Никакого RISC ядра там не было, ни снаружи, ни внутри.
Собственно нет и сейчас, хотят некоторые авторы любят говорить о мифическом RISC-ядре у современных CISC процессоров.
Если уж говорить о внутреннем RISC ядре, то надо смотреть в сторону K6-2.
Там они явно преобразовывали х86 операции в свой внутренний набор «RISC86».
Это неправда. Никакого RISC ядра там не было, ни снаружи, ни внутри.
CISC в чистом виде остался в 80-х, как и ортодоксальный RISC. И Интел при создании 486 уперся в потолок архитектуры CISC, незначительные улучшения, значительно усложняло процессор. Плюс при анализе выяснилось конвейер 386 частенько простаивает, поскольку его «тормозят» сложные команды. И в попытках решить эти проблемы Интел пришел к идее использования наработок из мира RISC: кэша на процессоре, глубокого конвейера, микрокоманд (микроопераций), предсказания переходов, а потом и суперскалярность, спекулятивное исполнение команд и переименование регистров. Но все это появилось конечно далеко не сразу. Вот тут подробно
Собственно нет и сейчас, хотят некоторые авторы любят говорить о мифическом RISC-ядре у современных CISC процессоров.
PentiumPro и К5 укоризненно смотрят на вас недоумении, они уже с 1995 года RISCуют всем, как и их потомки, а вы им прямо так безапелляционно в лицо «Нет вас, и точка!»
И если посмотреть в сторону AMD c RISC86, то вы ошиблись с поколением процессоров. Все началось гораздо раньше ещё во времена K5 в 1995году.
CISC в чистом виде остался в 80-х, как и ортодоксальный RISC.
Что вы подразумеваете под «чистым CISC»?
Bonnel 2008г вполне чистый CISC, конвейеризированный и суперскалярный конечно.
MIPS/Sparc/RISC-V вполне ортодоксальные RISC. Cortex-A53(55), простой in-order RISC работает в большинстве современных смартфонов (впрочем ARM это RISC не на 100%).
наработок из мира RISC: кэша на процессоре
Каким боком кэш относится к RISC? Кэш был на IBM S/360, к примеру, как впрочем и OoO, loop buffer, префетч двух веток branch-а. В 60х-годах.
И на 386 он был (внешний), и на 68030 (на чипе). А вот на ARM2 не было. Да и на многих современных ARM-ах нет кэшей.
Остальные упомянутые вещи также ортогональны RISC/CISC-овости (и некоторые даже VLIW-ности). Это просто средства повышения производительности.
PentiumPro и К5 укоризненно смотрят на вас недоумении, они уже с 1995 года RISCуют всем, как и их потомки, а вы им прямо так безапелляционно в лицо «Нет вас, и точка!»
Я не утверждал что K6-2 был единственным, но он был самым популярным из этой серии.
Не изучал эту микроархитектуру подробно, но с поверхностного взгляда сходство прослеживается.
А вот в PentiumPro нет RISC-подобного ядра.
Я говорил как раз об этом — о поверхностном понимании вещей.
Pentium Pro это CISC с OoO, как и K7.
Кстати говоря, высокопроизводительные RISC и CISC процессоры внутри практически не отличаются.
Cortex-A77 имеет uop кэш, как и Sandy Bridge, разбивает команды на микрокоманды и собирает из них макрокоманды.
ПЗУ микрокоманд используются и в RISC процессорах.
Или вот Ares, серверный вариант Cortex-A76, похоже что может патчить команды, что обычно в RISC не делается.
Что вы подразумеваете под «чистым CISC»?Конкретно я считаю последними массовыми «чистыми» CISC это Intel 386 и Motorola 68020/68030, поскольку начало их проектирования пришлось на 1981-1982 года и идеи RISC не успели как-то повлиять на их дизайн.
Bonnel 2008г вполне чистый CISC, конвейеризированный и суперскалярный конечно.Вы ошибаетесь, я говорю это как пользователь данной микроархитектуры: "Bonnell is a CPU microarchitecture used by Intel Atom processors which can execute up to two instructions per cycle.[1][2] Like many other x86 microprocessors, it translates x86 instructions (CISC instructions) into simpler internal operations (sometimes referred to as micro-ops, effectively RISC style instructions) prior to execution. The majority of instructions produce one micro-op when translated, with around 4% of instructions used in typical programs producing multiple micro-ops. The number of instructions that produce more than one micro-op is significantly fewer than the P6 and NetBurst microarchitectures. In the Bonnell microarchitecture, internal micro-ops can contain both a memory load and a memory store in connection with an ALU operation, thus being more similar to the x86 level and more powerful than the micro-ops used in previous designs.[3] This enables relatively good performance with only two integer ALUs, and without any instruction reordering, speculative execution or register renaming. A side effect of having no speculative execution is invulnerability against Meltdown and Spectre.
The Bonnell microarchitecture therefore represents a partial revival of the principles used in earlier Intel designs such as P5 and the i486, with the sole purpose of enhancing the performance per watt ratio. However, Hyper-Threading is implemented in an easy (i.e. low-power) way to employ the whole pipeline efficiently by avoiding the typical single thread dependencies.[3]"
Плюс на IXBT есть шикарный цикл статей именно об архитектуре Atom, с разбором «Как? Почему? Зачем?» «Процессор Intel Atom: Всё, что вы хотели знать, но не могли найти» Часть 1, часть 2, часть 3.
Выдержка из первой части: «Декодирование команд происходит двумя простыми трансляторами и одним микросеквенсором. Это несколько отличается от обычной схемы, где один из трансляторов является сложным, т. к. генерирует более одного мопа за такт (как правило — 3–4, по числу конвейеров). Все трансляторы декодируют по одной команде за такт. Микросеквенсор выдаёт по нескольку мопов (для Атома, разумеется, не более двух), но в течение нескольких тактов и только для особо сложных команд, требующих микрокода. Однако по оценке Intel лишь 4% команд потребуют более 1 мопа — микрослиянию подвергается 16% команд, в т. ч. такие относительно сложные как Load-Op-Store (с модификатором в памяти), которым ранее требовалось 2–3 мопа (из других x86-архитектур так умеет лишь AMD K10). Т. е. для Атома микрослияние уменьшило число обращений в микрокод впятеро. Таким образом, стремление к разбиению команд на простые RISC-операции для ускорения исполнения, очевидное сегодня и 15 лет назад (этим от P5 отличался P6, он же Pentium Pro), в данном случае обратилось вспять — за неимением возможности перетасовать команды, крайне расточительно забивать весь конвейер мопами (тем более, что он и так очень узкий) — а скорости и без этого достаточно.
Выход декодера подключен к 32-моповой очереди, которая статически делится надвое при включенной HT. Весь front-end («голова конвейера» от предсказателя до очереди мопов) может работать в отрыве от back-end (исполнительного «хвоста») в случае задержек данных или исполнении долгой команды, наполняя очередь мопами про запас.»
MIPS/Sparc/RISC-V вполне ортодоксальные RISC.
MIPS настолько ортодоксален что официально имеет Application-specific extensions, которые описывают расширения команд от MIPS MCU и MIPS SIMD architecture до MDMX и MIPS-3D.
Может у SPARC более чист и ортодоксален? А нет, есть Visual Instruction Set is a SIMD instruction set extension for SPARC V9 microprocessors developed by Sun Microsystems. There are five versions of VIS: VIS 1, VIS 2, VIS 2+, VIS 3 and VIS 4.
Может RISC-V чистый и ясный, без следов легаси порадует взгляд пуриста и ортодокса? Нет, не порадует, расширения (15) сразу заложены в стандарт из них шесть зафиксированы, а оставшиеся в процессе разработки и наполнения.
О чем это говорит? О том что все эти архитектуры не академическая разработка созданная чтоб доказать чистоту «крови и идей», а вполне прикладные, идущие навстречу обычному пользователю, стоящие на земле.
Cortex-A53(55), простой in-order RISC работает в большинстве современных смартфонов (впрочем ARM это RISC не на 100%).Так Android больше и не надо, более того скажу Android x86 вполне комфортно себя чувствует на одноядерном P4 с Hyper-Threading, и даже на Atom-е. И про ARM (что это RISC не на 100%) поставим галочку. ;)
Каким боком кэш относится к RISC?Тем боком, что на первом коммерческом микропроцессоре с архитектурой MIPS R2000, представленный в 1985 году, уже был кэш на процессоре. Причем не смешные 256 байт кэша команд 68020-го, а вполне приличные, даже по нынешним временам, 64кб под инструкции и 32кб под данные.
Кэш был на IBM S/360, к примеру, как впрочем и OoO, loop buffer, префетч двух веток branch-а. В 60х-годах.IBM S/360 в 60-х существовал в виде одной интегральной схемы? Или хотя бы одной платы? В 60-е естественно? Нет? Тогда наверное и не стоит это обсуждать.
И на 386 он был (внешний), и на 68030 (на чипе). А вот на ARM2 не было.У R3000 он был и на чипе 64кб+64кб, плюс 256Кб внешнего кэша, супротив максимального внешнего кэша в 128кб(обычно был 64кб) у 386, или 256+256 байт(0,5кб) кэша на процессоре у 68030 внешний кэш тоже был вроде 128кб максимум, но могу ошибаться. И у ARM3 кэш уже был, унифицированный на 4кб.
Да и на многих современных ARM-ах нет кэшей.Большинство которых является микроконтроллерами, которым кэш нужен как рыбе зонтик.
Остальные упомянутые вещи также ортогональны RISC/CISC-овости (и некоторые даже VLIW-ности). Это просто средства повышения производительности.Можно я процитирую «RISC vs. CISC: the Post-RISC Era»?
«Instead of RISC or CISC CPUs, what we have now no longer fits in the old categories. Welcome to the post-RISC era. What follows is a completely revised and re-clarified thesis which found its first expression here on Ars over a year ago, before Ditzel spoke his mind on the matter, and before I had the chance to exchange e-mail with so many thoughtful and informed readers.
In this paper, I'll argue the following points:
1.RISC was not a specific technology as much as it was a design strategy that developed in reaction to a particular school of thought in computer design. It was a rebellion against prevailing norms--norms that no longer prevail in today's world. Norms that I'll talk about.
2.»CISC" was invented retroactively as a catch-all term for the type of thinking against which RISC was a reaction.
3.We now live in a «post-RISC» world, where the terms RISC and CISC have lost their relevance (except to marketing departments and platform advocates). In a post-RISC world, each architecture and implementation must be judged on its own merits, and not in terms of a narrow, bipolar, compartmentalized worldview that tries to cram all designs into one of two «camps.»"
А вот в PentiumPro нет RISC-подобного ядра.P6 (microarchitecture)
«P6 processors dynamically translate IA-32 instructions into sequences of buffered RISC-like micro-operations, and then analyze and reorder the micro-operations in order to detect parallelizable operations that may be issued to more than one execution unit at once. The Pentium Pro was not the first x86 chip to use this technique — the NexGen Nx586, introduced in 1994, also used it — but it was the first Intel x86 chip to do so.»
Так что было.
Кстати говоря, высокопроизводительные RISC и CISC процессоры внутри практически не отличаются.
Cortex-A77 имеет uop кэш, как и Sandy Bridge, разбивает команды на микрокоманды и собирает из них макрокоманды.
ПЗУ микрокоманд используются и в RISC процессорах.
Или вот Ares, серверный вариант Cortex-A76, похоже что может патчить команды, что обычно в RISC не делается.
Вот это фортель! Начали вы за здравие, а кончили за упокой.
С чем вы изначально спорили «CISC в чистом виде остался в 80-х, как и ортодоксальный RISC», к этому выводу вы и вернулись «Кстати говоря, высокопроизводительные RISC и CISC процессоры внутри практически не отличаются.». А все потому что создатели процессоров работают не на «чистую идею», а ради пользователя который приносит им прибыль.
it translates x86 instructions (CISC instructions) into simpler internal operations (sometimes referred to as micro-ops, effectively RISC style instructions) prior to execution.
Написанное не совсем верно. Да, сложные инструкции разбиваются, но их нельзя назвать RISC-овыми. Это просто микрооперации. CISC-овые load-op не разбиваются, а остаются одним МОП-ом.
LOAD-OP инструкции это один из признаков CISC.(1)
MIPS настолько ортодоксален что официально имеет Application-specific extensions, которые описывают расширения команд от MIPS MCU и MIPS SIMD architecture до MDMX и MIPS-3D.
SIMD опять же никак не влияет на RISC-овость. С появлением SIMD вообще ничего не поменялось. Какой-нить ADD работает просто с другим набором регистров. Да можно даже этот набор не делать, как к примеру у DSP инструкциях ARMv6.
А у CELL SPU — чистейшего RISC, как из книжки, вообще нет скалярной части. CISC архитектуры имеют load-op в SIMD, как правило. См. (1)
IBM S/360 в 60-х существовал в виде одной интегральной схемы? Или хотя бы одной платы? В 60-е естественно? Нет? Тогда наверное и не стоит это обсуждать.
Какое это имеет значение? Хоть на транзисторах реализуй — RISC отстанется RISC-ом.
www.openpa.net/pa-risc_processor_pa-early.html
These early CPUs still mostly were multi-chip processors with separate chips and components forming the central processing unit
The TS-1 was the first PA-RISC production processor, introduced in 1986. It integrated version 1.0 of PA-RISC on six 8.4×11.3″ boards of TTL and was used in HP 9000 840 servers, the first PA-RISC computers.
Кэш никак не связан с CISC/RISC подходом. Точка. Это часть иерархии памяти. Вынесите кэш из процессора (как в PA-RISC), и у него что, поменяется система команд? Господи, какая же ересь.
Он есть и в VLIW и в любом другом процессора, где требуется оптимизация обращения к памяти.
Пока что я вижу у вас непонимание смысла и признаков RISC.
RISC — reduced INSTRUCTION SET architecture.
Микроархитектура — это блэкбокс. Она действует по правилам, прописанным Архитектурой.
Статьи, которые вы цитируете, я давно прочитал.
P6 processors dynamically translate IA-32 instructions into sequences of buffered RISC-like micro-operations
Можно документ от Интел увидеть? В вики кто только не пишет (как и статьи для неспециалистов на популярных сайтах).
Вот это фортель! Начали вы за здравие, а кончили за упокой.
Отнюдь. Мир не ограничивается одними только высокопроизводительными процессорами. Сходство микроархитектур не влияет на архитектуру, потому что микроархитектура лишь средство повышения производительности.
Сходство микроархитектур не влияет на архитектуру, потому что микроархитектура лишь средство повышения производительности.
Имел в виду что-то типа:
Микроархитектура — физическая реализация Архитектуры, даёт возможность повышения производительности теми или иными методами, но всё это происходит в рамках Архитектуры.
Вот проплывает облако, похоже на слона. Но это не делает его слоном.
Так и с «RISC-like» микрооперациями.
В P6 они действительно похожи на RISC, поэтому выражение RISC-like микрооперации можно использовать для объяснения сути (для людей, поверхностно знакомых с этими понятиями), а вот утверждать что у него RISC-ядро — нельзя.
С чем вы изначально спорили «CISC в чистом виде остался в 80-х, как и ортодоксальный RISC»,
Именно. Это не верное утверждение.
RISC-V = ортодоксальный RISC (по крайней мере RV64IMAC).
В RV32I даже умножения нет — слишком сложная инструкция :)
Он не только не остался в 80-х, а наоборот, увеличивает присутствие.
Ну и вообще RISC процессоров (почти таких же, как и в 80-е) сейчас выпускается огромное количество — ARM-ов в год продаётся > 20 миллиардов штук.
Написанное не совсем верно. Да, сложные инструкции разбиваются, но их нельзя назвать RISC-овыми. Это просто микрооперации. CISC-овые load-op не разбиваются, а остаются одним МОП-ом.
LOAD-OP инструкции это один из признаков CISC.(1)
Вот в этой лекции "Исполнение процессорами инструкций x86 и x64 (Лекция)" подробно рассказывается про то как кодовый поток х86 разбивается на МОПы, и что делается чтоб процессор не захлёбывался на оборотах.
«Кэш инструкций в процессоре P-4 очень сильно отличается от I-кэша в процессоре классической архитектуры. В нём преобразование исходных x86-инструкций в МОПы производится перед кэшем, а в кэш помещаются целые трассы, составленные из этих МОПов. Поэтому такой кэш в процессоре P-4 называется «кэш трасс»»
Для суперскалярной обработки необходимо в каждом такте извлекать из входного потока несколько инструкций переменной длины и отправлять каждую из них в отдельный блок декодирования для преобразования в микрооперации (МОПы). Эта задача представляется очень трудоёмкой, поэтому необходимо применение специальных средств, которые позволили бы её облегчить. В разных процессорах x86 используются различные приёмы и механизмы, обеспечивающие бесперебойную обработку инструкций. Лишь для процессора PPC970 не требуется никаких ухищрений, так как в RISC-архитектуре IBM Power машинные инструкции имеют фиксированную длину (4 байта) и регулярный формат. По типу используемых механизмов рассматриваемые процессоры можно разбить на четыре класса:
PPC970: Не используется никакой механизм, так как инструкции имеют фиксированную длину и формат.
P-III, P8: После выборки из I-кэша производится разметка инструкций (определение их границ и положения кода операции) в устройстве, называемом определителем длины инструкций (Instruction Length Decoder, ILD).
K8: Перед помещением блоков инструкций в I-кэш производится предварительное декодирование (предекодирование) с аналогичной разметкой, информация о разметке записывается в дополнительные биты при каждом байте в I-кэше.
P-4: Перед помещением в кэш производится полное декодирование инструкций, сформированные МОПы записываются в этот кэш (Т-кэш) в виде трасс.
Ниже будет для примера рассмотрен процесс исполнения инструкций только для архитектуры P-III и P-8. Более подробно об исполнении инструкций процессорами другой архитектуры можно узнать из статьи, ссылка на которую сделана в конце лекции.
Процессоры Intel Pentium III, Pentium M и Core Duo
В процессорах семейства P6 инструкции считываются из I-кэша выровненными блоками по 16 байтов за такт. Выборка производится с опережением – у процессора есть два буфера, в которые помещаются два последних считанных блока. На вход подсистемы декодирования в каждом такте передаётся порция байтов, начинающаяся с того места, где была прекращена обработка в предыдущем такте. Длина этой порции ограничена также 16 байтами. Порция байтов поступает на вход определителя длины инструкций (ILD), который производит её разметку – нахождение границ и положения кода операции в каждой x86-инструкции.
Определитель длины инструкций должен быть обязательно реализован неконвейерным образом, с временем работы 1 такт – так как в следующем такте надо будет размечать новую порцию, начинающуюся после последней инструкции, размеченной в данном такте. Определитель содержит 16 одинаковых устройств, построенных на основе программируемых логических матриц (PLA). На вход каждого такого устройства подаётся фрагмент кода длиной 4 байта, начинающийся с одного из 16 байтов в обрабатываемой порции. Устройство (PLA) представляет собой примитивный декодер, который предполагает, что данный фрагмент является началом x86-инструкции (без префиксов), и пытается определить её длину. Кроме того, это устройство анализирует первый байт в фрагменте и определяет, не может ли он являться префиксом.
Результаты работы всех таких устройств собираются воедино с помощью цепочки схем быстрого переноса. По существу, эти схемы последовательно выстраивают список инструкций на основе данных о длинах и признаках наличия префиксов, начиная с первой инструкции в обрабатываемой порции байтов. По результатам этого выстраивания в специальных массивах делаются пометки о позициях кода операции и последнего байта в каждой инструкции. Эта информация используется в последующем такте для извлечения инструкций из буфера и передачи их на вход трёх каналов декодера.
В некоторых случаях определитель длины инструкций не может произвести разметку за один такт. Например, если встречается префикс, меняющий длину непосредственного операнда или смещения адреса в инструкции с 16 бит на 32 бита, либо наоборот, определитель переходит в «медленный» режим, размечая по 4 байта за такт. Однако такие случаи не часты и по существу представляют собой нарушение правил программирования. Кроме того, разметка замедляется, если в какой-то инструкции встречается два или более префиксов – в этом случае обработка каждого дополнительного префикса занимает один такт. На практике эта ситуация также очень редка.
После разметки три выделенные x86-инструкции передаются в основной декодер – точнее, в три параллельно работающих канала декодирования. Эти три канала не являются полностью симметричными – только первый из них может обработать любую инструкцию, а оставшиеся два имеют ограничения: инструкция должна иметь длину до 8 байтов и порождать только один МОП. У первого канала декодирования таких ограничений нет – он может породить до 4 МОПов в одном такте, параллельно с работой двух других каналов. Для обработки самых сложных инструкций (более 4 МОПов) требуются дополнительные такты, и в этом случае обработка ведётся последовательно.
Таким образом, схему работы декодера в процессоре P-III можно обозначить как «4-1-1 / >4»: он может обрабатывать в одном такте, либо три инструкции, порождающие до 6 МОПов (4+1+1), либо одну, порождающую более 4 МОПов. Порождаемые МОПы накапливаются в небольшой очереди перед отправкой (группами по три) в последующие тракты процессора. Схема «4-1-1» накладывает определённые ограничения на оптимальное размещение x86-инструкций в коде: сложные инструкции (в частности, инструкции типа Load-Op) должны чередоваться с простыми, а не следовать подряд друг за другом. Впрочем, даже при плотном размещении нескольких сложных инструкций всё равно в каждом такте будет порождаться как минимум 2 МОПа, а очередь МОПов после декодера позволит сглаживать возникающие неравномерности.
В процессоре P-III при декодировании инструкций загрузки из памяти с последующим исполнением (Load-Op) порождаются отдельные МОПы для загрузки и для выполнения. Аналогично, для инструкций выгрузки в память также порождаются два отдельных МОПа: для вычисления адреса, и для осуществления записи. В обоих случаях два МОПа обслуживаются в последующих трактах процессора по отдельности и занимают его ресурсы. Из-за частой встречаемости инструкций, содержащих загрузку из памяти и выгрузку в память, среднее число МОПов на одну x86-инструкцию может находиться в диапазоне от 1.3 до 1.5.
Начиная с процессора P-M, в декодере реализован механизм «слияния микроопераций» (micro-ops fusion), когда порождается единый МОП, содержащий два элементарных действия. Разделение на эти элементарные действия происходит при запуске МОПа на исполнение. Механизм слияния микроопераций похож на аналогичный механизм в процессорах AMD K7/K8. Этот механизм экономит ресурсы буферов и увеличивает эффективную пропускную способность трактов процессора. Благодаря такому механизму среднее число МОПов на одну x86-инструкцию значительно снижается и становится близким к единице. Кроме того, инструкции Load-Op могут теперь обрабатываться во всех трёх каналах декодера, что, практически, сводит на нет недостатки несимметричной схемы «4-1-1».
SIMD опять же никак не влияет на RISC-овость.Набор инструкций увеличился и стал сложнее, команды явно не за один такт выполняются и это не оказывает влияние на конвергенцию с CISC?
А у CELL SPU — чистейшего RISC, как из книжки, вообще нет скалярной части.Так у него (ядра на архитектуре POWER) сопроцессоров как у дурака фантиков. Правда разработчики игр на PS3 от такого богатства выбора тихо выли и готовы были стреляться, но «проблемы индейцев шерифа не волнуют». Так что мощный числогрыз, но нишевый.
Какое это имеет значение? Хоть на транзисторах реализуй — RISC отстанется RISC-ом.Поскольку обсуждаются микропроцессоры (реализованные на одном чипе). А нам трааамзисторах тоже можно реализовать (на МП42), только в лучшем случае это будет калькулятор с системой команд RISC.
Кэш никак не связан с CISC/RISC подходом.С RISC-ом кэш связан тем что он впервые смог поместится рядом с процессором, и мог работать с процессором в унисон, а не по заявке «когда там шина освободится, тогда байтики и поедут, а пока процессор сиди и жди пока флаг MRDY на шине не поднимется». А почему кэш на кристалл поместился? Возьмем к примеру кристалл 386 375000 транзисторов и процессор ARM2 — 27000 транзисторов. Если его разместить на кристалле 386 у нас останется незадействованными 348000 транзисторов. Много это или мало? Посчитаем для статической памяти и для динамической. Статическая ячейка памяти на один бит 6 транзисторов что дает нам 58000 бит или 7250 байт. Затратно? Затратно — но очень быстро и без задержек. На динамической все немного проще: 3 транзистора и конденсатор — 116000 бит или 14500 байт. Медленнее чем статика, но быстрее чем далекая память на шине. Надеюсь так я смог вам на пальцах объяснить как RISC приблизил кэш к процессору и объединился с ним на одном кристалле.
Пока что я вижу у вас непонимание смысла и признаков RISC.EXTENDED (MIPS/Sparc/RISC-V нужное подчеркнуть) reduced instruction set computer — Расширенный Сокращенный набор инструкций компьютера, немного как оксюморон звучит, не находите? ;)
RISC — reduced INSTRUCTION SET architecture.
Микроархитектура — это блэкбокс. Она действует по правилам, прописанным Архитектурой.Блин, а я о чем говорю уже сколько времени? Для упрощения можно считать что I9-9990XE это все тот же 8086 из 1978 года с небольшими ограничениями, просто работающий 5 гигагерц вместо 5 мегагерц. Просто они оба следуют ISA x86.
Статьи, которые вы цитируете, я давно прочитал.Но возможно я освежил ив в вашей памяти, плюс подсказал вам о RISC ядре у AMD K5.
Можно документ от Интел увидеть?Постараюсь найти, но у меня такое чувство что Intelпосле определенного времени стал документацию выдавать только под NDA. Так может Интел и попросим поделиться с нами?
В вики кто только не пишет (как и статьи для неспециалистов на популярных сайтах).Так сделайте мир чище, поправьте википедию, напишите статьи для неспециалистов.
Отнюдь. Мир не ограничивается одними только высокопроизводительными процессорами.А я такого нигде не утверждал, вон Zilog Z80 на куче SoC крутится, руководя более мощными специализированными процессорами.
Сходство микроархитектур не влияет на архитектуру, потому что микроархитектура лишь средство повышения производительности.Я цитировал эту фразу, процитирую её еще раз "RISC это не технология, RISC это стратегия дизайна. Когда то RISC был бунтом против норм, сейчас он — норма". А поскольку RISC это стратегия дизайна то она может быть приложена к любой технологии.
Поспешил.Бывает, ни каких проблем.
Имел в виду что-то типа:Не совсем правильная ассоциация, правильная будет такая: вот акула, целакант, дельфин и касатка, выглядят они похоже, но происхождение у них разное, кто то всегда был морским жителем, чьи-то родственники вышли на сушу, но через огромный период времени их потомки вернулись в океан. За счет одинаковых условий стратегия развития у них была одна и та же. Поэтому и внешний вид у них похожий.
Микроархитектура — физическая реализация Архитектуры, даёт возможность повышения производительности теми или иными методами, но всё это происходит в рамках Архитектуры.
Вот проплывает облако, похоже на слона. Но это не делает его слоном.
Так и с «RISC-like» микрооперациями.Выше я уже приводил ссылку на лекцию, в которой прямо говориться о предварительном декодировании х86 команд в МОП, что МОПы загружаются в независимые конвейеры МОП, что МОПы реорганизуются в этих очередях, что регистры с которыми работают МОПы переименовываются, плюс с Р4 кэш команд заполняется именно МОПми, а не кодами х86. Разве этого мало чтоб назвать все это highly likely RISC-alike?
В P6 они действительно похожи на RISC, поэтому выражение RISC-like микрооперации можно использовать для объяснения сути (для людей, поверхностно знакомых с этими понятиями), а вот утверждать что у него RISC-ядро — нельзя.
Именно. Это не верное утверждение.
RISC-V = ортодоксальный RISC (по крайней мере RV64IMAC).
Ну в RV64IMAC как минимум есть следующие расширения:
M — стандартное расширение для целочисленного умножения и деления
A — стандартное расширение для атомарных инструкций
C — стандартное расширение для сжатых инструкций
В RV32I даже умножения нет — слишком сложная инструкция :)Умножение для слабаков, сдвиг наше все ;)
Он не только не остался в 80-х, а наоборот, увеличивает присутствие.И RISC-V бодается с старичком MIPS-ом который родом именно из 80-х.
Ну и вообще RISC процессоров (почти таких же, как и в 80-е) сейчас выпускается огромное количество — ARM-ов в год продаётся > 20 миллиардов штук.Так вы же сами говорили что ARM не
Тем более я и не спорил с тем что RISC себя оправдал. Он просто эволюционировал все эти годы. А если серьезно на вскидку что на RISC у меня, древний фотик с китайским SUNPLUS-ом MIPS, читалка на Samsung SoC MIPS, древний видеоплеер на ARM, игровая приставка на ARM, SmartTV приставка на ARM, TV приставка на MIPS. Это только на вскидку в моем хозяйстве. Ааа вспомнил — Diamond Stealth S220 (Rendition Verite V2100) у меня был — в его ядре MIPS лежал.
Спасибо за статью! Было бы классно увидеть продолжение, очень понравился и сам подход, и результат. Больше Z80, хороших и разных)
«Как-то у меня не очень получилось, поэтому повторю. Почти все компы представляли собой ядро из небольшого числа микросхем. Это был как раз процессор, ОЗУ, ПЗУ и немного логики для декодирования адреса. Все.»
спорное утверждение. позволю себе даже назвать его опрометчивым. «почти все» вряд ли может вычленить знаковый компьютер типа Apple ][ (да, двойку так и писали, скобками, фишка), а также линейки всяких промышленных компьютеров на основе Intel 8085, которых множество и с которыми, возможно, не знакомы. так вот:
1. у 8-битового Интела 8085 шина была мультиплексированной, восемь выводов процессора выдавали младшую половину адрес (A0-A7), внешная логика ее «защелкивала», а потом через те же выводы проводился обмен данными (D0-D7). так что еще чуток дискретной логики придется добавить.
2. мой любимый Apple ][ (на нем начинал) располагал динамической памятью. DRAM (TMS4116) заметно дешевле SRAM (в Вашем случае CY62256LL). так вот, динамическая память требует обновления каждые несколько миллисекунд. поэтому нужно добавить дополнительную логику, считывающую все ряды в рамках периода обновления. довольно, кстати, непростую — нужен хотя бы счетчик для получения всех возможных адресов строк, нужно каким-то образом разделить обмен процессора с памятью от доступов для обновления, а также нужна логика для управления сигналами CAS и RAS от двух этих источников.
3. создатели Эппла подошли к задаче нетрадиционно, возложив функции обновления памятью на самопальный видеоконтроллер, превратив обычное ОЗУ посредством логики в «двухвыходное». видеоконтроллер все равно считывает информацию каждый кадр, так что счетчик не нужен. но зато нужна была логика для считывания данных в полуцикле (основной полуцикл с памятью работает процессор, в «теневом» полуцикле память читает видеоконтроллер). таким образом без видеоконтроллера никак — иначе ваше «ядро» все забудет.
Да, конечно, вы правы, далеко не все компьютеры были настолько просты, но очень многие все же были именно такими. Я бы сказал, подавляющее большинство были чрезвычайно просты, все же. Мультиплексирование Ителовское и в 8086/8088 было, но право же, одна защелка, не так и страшно )) А вот DRAM посложнее, но был же Z80, который сам был себе контроллер DRAM. Да и я про общую архитектуру больше, от замены DRAM на SRAM архитектурно ничего не изменится, а весь рефреш можно просто выкинуть. В спектруме, кстати, тоже использовалась DRAM, часть которой обновлял Z80, а вторую часть — ULA. То есть тут тоже «видеоконтроллер» обновлял DRAM, пусть и не всю ).
Тем не менее, спасибо вам за коментарий — приятно читать!
создатели Эппла подошли к задаче нетрадиционно
Нетрадиционно? Серьёзно? Примерно все домашние 8-битные компы 80ых годов так делают. Такое решение лежит на поверхности.
Наверное, больше него [Z80] мне нравится только 486й чип, но до него руки дойдут еще нескоро, ибо вставить его в макетку сложно и бессмысленно. Придется паять.Где-то в середине 90-х один знакомый разработчик получил заказ на проектирование масспектрометра. Разработал он его на 386-ом процессоре. Тогда как раз разработчикам купили свеженькие компьютеры на 486-ых, да памяти по 2 МБ. Двухслойные печатные платы заказывали в конторе, где техпроцесс был расписан на неделю (печать фотошаблона, нанесение резиста, засветка, травление, сверление, пистонирование переходных отверстий, лужение).
И вот через неделю сообщают — всё пропало, отпал фоторезист, как раз на месте стоногого процессора — полупереваренная каша из меди. Пардоньте, через неделю будет в лучшем виде.
А у разработчика сроки горят. Что сделал бы нормальный разработчик — сообщил бы заказчику, дескать события непреодолимой силы, давайте сдвинем на недельку
Здравая доля ненормальнинки в разработчике может и должна быть.
Спасибо за статью.
«1 микросхема FPGA вместит компьютерный класс Спектрумов»
Ахаха, вы сделали мой день!
Крякозябры на скриншоте экрана это от того, что только 6 из 8 бит считываются, или есть дополнительные проблемы? Будет ли ардуинка успевать считывать и передавать данные?
Еще серьезная проблема есть с тем, что по сути реализован DMA как я понял. В релейном компе у меня похожий принцип работы индикаторной панели — мне нужно некоторую область ОЗУ вывести на матрицу 16*32.
Проблема моего видео-МК была в том, что он мешает работе процессора. В итоге я его перевел в режим монитора.
т.е. читаем ША и ШД с помощью 74HC165 и если пришедший адрес попадает в диапазон адресов видеопамяти, то считываем его и передаем дальше, если нет, ничего не делаем.
Строб записи на 165 можно завести от логики Z80 — тогда он сам будет при каждом обращении к ОЗУ на запись обновлять содержимое буфера.
Тут, правда, встает вопрос скорострельности записи и считывания — можно не успеть считать. 165-е.
Крякозябры не только из-за 6и бит. Внизу экрана непрорисованые горизонтальные линии — это либо отсутствие нужных данных в ОЗУ, либо ошибка чтения самой ардуиной. Ардуинки будет сильно мешать, по крайней мере в том виде, в котором она работает сейчас. Хардварно реализовывать видеовывод как-то не хочется, это получится очередной клон Спектрума, один из миллионов… буду думать )))
На схеме Арлекина этот сигнал, почему-то, подключен через резистор. Сделаем так же. Зачем, я не знаю. Может, умные люди подскажут в комментариях…
Этот сигнал параллельно подключен к слоту для периферии. Благодаря этому, периферия может принудительно отключать встроенное ПЗУ спектрума и подключать вместо него своё. Резистор нужен чтобы избежать конфликта между ULA и периферией. Эта функция используется, например, в Beta Disk Interface, DivMMC, ZX Dandanator Mini и т.д.
Спасибо, было интересно почитать как устроены старые компьютеры. В последнее время меня интересует эта тема. Минимализм и экономия порой впечатляют.
- Архитектура NES впечатляет и удивляет одновременно: неужели в 83 году имело смысл так экономить память? Спектрум в 82 имел 16-48кб памяти и это была low-end машина.
- Game Boy и Sega Master System по своему интересны: в видеопамять все не помещалось, пришлось порезать количество спрайтов/тайлов (в Game Boy) или размер карты тайлов (Sega Master System).
- Видеоподсистема Atari 2600 вообще где-то за гранью разумного. Вроде бы и понимаешь, почему было так сделано, но все равно ощущение какой-то жести и садизма для разработчиков.
Кстати, для любителей поиграть на эмуляторе спектрума могу порекомендовать отличную для этого дела ретро-железку Nintendo DS. Она просто идеально подходит для эмуляции:
- Экраны 256х192, как раз то, что надо
- На верхнем экране игра, на нижнем клавиатура с резистивным тач скрином
- Есть джойстик (на самом деле геймпад)
Архитектура NES впечатляет и удивляет одновременно: неужели в 83 году имело смысл так экономить память? Спектрум в 82 имел 16-48кб памяти и это была low-end машина.
Если вы имеете в виду набортную RAM, то её стоило экономить затем, чтобы в 64 Кб адресного пространства осталось место для 32 Кб картриджа. У Спектрума же не было сменных картриджей, и программы загружались в основную RAM.
Так ведь вопрос не в ROM картриджа. Половину адресов отдать в картридж это ок. Когда ROM память подешевела началось с мапперами, банками памяти и прочим. Тут-то как раз все понятно, решение правильное и логичное.
Вопрос в остальных 32кб адресного пространства. RAM памяти-то всего 2кб. Конечно, не 128 байт, как у Atari 2600, например. Но, как мне кажется, в 83 году можно было бы и побольше поставить. Специально сравнил со спектрумом, у него в 82 было 16-48кб.
А еще видеопамять. Там тоже интересная архитектура. 2кб RAM для тайлов + 256 байт под спрайты в приставке и 8кб адресуется ROM на картридже. И в целом ок, но у видеоподсистемы NES такая ахитектура, что ей по-хорошему нужно 4кб под тайлы. Без этого довольно сложно делать игры, в которых прокрутка экрана по двум осям. Вопрос был в том, имел ли смысл экономить эти 2кб?
Хотя все-же еть предположение почему могло иметь смысл экономить. Возможно, в то время не было доступных микросхем с большим объемом памяти. В этом случае надо было бы ставить больше микросхем, усложнять разводку и т.п. Но это только предположение, я не знаю как было на самом деле.
Простите, аффтар, вы ПРИНЦИПИАЛЬНЫЕ СХЕМЫ умеете рисовать? Это вас в ардебилино-сообществах научили вместо чтоб нарисовать обычную и всем понятную схему — копипастить распиновку микросхемы и подписывать куда это якобы подсоединено? А потом еще портянку текста писать о том же:
В нашем случае, мы подключаем сам декодер следующим образом: старший бит (3я нога) к земле, там всегда будет 0.
Ну и потом такую схему как-то странно рисовать. Там 5 корпусов всего…
Кстати, если подскажете какой-нибудь онлайн ресурс для рисования схем, буду признателен.
Кстати, если подскажете какой-нибудь онлайн ресурс для рисования схем, буду признателен.
easyeda.com, прост как 2 копейки, огромная база компонентов, там же можно и платы разводить, и заказывать по 2 бакса за десяток.
За статью спасибо, сейчас сяду вторую часть осиливать
Я не знаю ни одного человека, у которого есть Ардуино и нет 74HC595.Я — такой человек :) Но я, конечно, не пытался подключать Ардуино к Z80.
Крутая статья!
Я бы с огромным удовольствием прочитал статью (или цикл) об устройстве Спекки и его сборке с нуля по шагам. Схем в Инете полно, но самому разбирать их руки не дойдут, да и профиль не тот. А вот в виде описание что и как устроено и почему — с огромным удовольствием.
Я постараюсь в продолжении побольше рассказать об устройстве самого спекки, само собой, но с этой книгой сложно сравнится. Это очень большой труд очень талантливых людей. Оно того стоит, правда.
ZX Spectrum ничем от традиционной схемы не отличается, кроме одного но. Там есть ULA.… а чтобы Z80 не шарился там, когда не надо, ULA могла остановить процессор, если надо, ведь тактовый сигнал на Z80 шел именно от нее.
Могу что-то напутать за давностью лет… Собирал в своё время разные варианты Спеки, естественно и настраивал и в схемах разбирался. По способу вывода и приоритета доступа к памяти можно выделить 2 вида реализации.
Для вывода на экран одной строки из 8 точек одного знакоместа надо было вычитать два 8-ми битных числа. Для тех кто не в курсе — каждое знакоместо 8х8 имело общие атрибуты ink, paper, bright, flash. Первые два трёхбитные кодировали цвет (RGB), итого 8 бит. Элемент строки представлял из себя однобитный код «точек» цветами ink или paper. Таким образом, одному знакоместу соответствует 8 байт с «точками» и 1 байт атрибутов. Как видно 3-мя счётчиками тут не обойтись…
Так вот, в ранних реализациях на россыпи, в частности т.н. «Краснодарский» действительно выставлял «1» на /CLK, так как для вывода байт точек и атрибутов вычитывался из памяти в стык. Правда в том же «Краснодаре» было 2 набора памяти на РУ5 и РУ6 и CPU тормозился только когда хотел писать в область видеопамяти. Другие варианты задействовали вывод /WAIT для растягивания машинного цикла. Более поздние реализации чтения видеопамяти делали с расслоением — видео/CPU/видео/CPU. Последний при этом не только работал без задержек, но и была возможность турбировать комп по частоте в 2 раза, но с использованием /WAIT. Варианты 128К+ не вайтировали когда обращение шло к разным линейкам микросхем памяти.
Я писал поо оригинальный спекки. Там ULA останавливала клок.
Варианты 128К+ не вайтировали когда обращение шло к разным линейкам микросхем памяти.
А как это получалось? Физически же одна шина, два адреса на нее не выставить…
В некоторых клонах Спектрума (Орель БК-08) ставили кнопку NMI и помещали в ПЗУ несложный отладчик, вызываемый по нажатию этой кнопки.
Пытался прочитать всю статью, но не смог, я слишком плохо соображаю в этой отрасли.
Мне что бы это понять не поможет время, это всё равно, что нейросеть, которая будет распознавать лицо человека, создать на основе спектрума.
Мне было 13, когда я начал знакомиться с цифровой техникой. Прошло 35 лет, а я до сих про помню то, чему тогда научился. Никаких секретов нет — замечательбый журнал Радио объяснял все с элементарных вещей, с азов, не понять было просто невозможно.
Вот здесь опубликован цикл тех статей, по которым я учился:
archive.radio.ru/web/1985/01/053
Затем хорошим источником примеров были статьи «Применение микросхем серии ...»:
archive.radio.ru/web/1984/04/026 Они были разными, о 176, 155, 555 сериях. В каждой была ценная информация.
Ну и обычные статьи того времени были довольно интересными, в них подробно описывалась работа того или иного устройства.
На втором курсе я спаял ZX Ленинград-48, а моей дипломной работой в Политехе было устройство, подключаемое к LPT порту, позволяющее функционально тестировать ТТЛ микросхемы. Сигналы подавались/снимались с помощью К580ВВ55. Все делала программа с библиотекой для сравнения входных/выходных сигналов.
При том, что в те времена 155ТМ2 и 155ЛА3 на халяву в магазине достать было просто невозможно. Сейчас у меня просто дух захватывает от доступности как элементной базы, так и любой информации по ней, включая живую поддержку и YouTube каналы.
Не смотря на то, что я почти 25 лет работаю программистом, магия электроники до сих пор не отпускает :) и я очень рад, что мне удалось получить такое качественное образование.
old_gamer, огромное спасибо за канал www.youtube.com/user/eaterbc, это просто невероятно, насколько он все просто и понятно объясняет! А книга «The ZX Spectrum Ula: How to Design a Microcomputer» придет в субботу ;)
С нетерпением жду второй части статьи. Спасибо!
old_gamer, огромное спасибо за канал www.youtube.com/user/eaterbc, это просто невероятно, насколько он все просто и понятно объясняет! А книга «The ZX Spectrum Ula: How to Design a Microcomputer» придет в субботу ;)
С нетерпением жду второй части статьи. Спасибо!
Да, канал восхитительный, я его всем интересующимся рекомендую.
Вторая часть уже в работе, припой пришел, теперь дело техники.
Спасибо!
В то же время у меня есть друг, мы знакомы уже 15 лет, и что такое ток и напряжение я объяснял ему миллион раз. Но он всё равно звонит мне и спрашивает какая мощность у лампочки если напряжение 12В а ток 5А. Миллион раз я объяснял что нужно просто перемножить эти два числа, но для него эти объяснения как белый шум. Я вспоминаю даже себя, когда я зубрил правила и формулы в которых были слова «прямо пропорциональный и обратно пропорциональный» для меня это был пустой звук который не имел никакого смысла, так же как и большинство терминов из этой стать. Но слава богу сейчас я хотя бы понимаю что значит «прямо пропорционально». Точно так же для моего друга все эти законы Ома с умножением и делением — просто пустые звуки, за 15 лет дружбы я ему этого так и не вдолбил. Думаете образование в этом виновато? Мне кажется мы просто стоим на разных интеллектуальных ступенях, я нахожусь где-то между Вами и моим другом. )))
Там автор очень наглядно показывает, как из дискретных логических элементов получается процессор, и как он работает.
Все собрано на элемнтарной логике — элементы, триггеры, счетчики, регистры (о которых рассказывается в упомянутых мной статьях в ж. Радио)
А в этом плэй-листе, он рассказывает азы низко-уровнего программирования на 8-битовом процессоре: youtu.be/LnzuMJLZRdU
Канал на английском, но он говорит очень неторопливо. Если непонятно — уменьшите скорость.
я очень мало знаю русскоязычных ресурсов по теме
Их не мало, на самом деле. Заходите, если что
zx-pk.ru/forum.php
И да, вторую часть бы тоже почитал :)
А схемы для Ардуинки удобно рисовать в Fritzing.
fritzing.org
Со схемой то есть шанс, что кто-то и повторит. :-)
ZX Spectrum из коронавируса и палок (на самом деле, не совсем)