В предыдущих разделах вы познакомились с двумя представителями CISC-архитектуры в классе 8-разрядных МК. Процессорное ядро MCS-51 выполнено по гарвардской архитектуре с раздельным адресным пространством памяти программ и памяти данных. Напротив, процессорное ядро НС08 использует принстонскую архитектуру с объединенным адресным пространством. Соответственно отличаются и системы команд. Однако не все отличия обусловлены способами доступа к тем или иным ячейкам памяти. Значительную часть определяет техническое творчество разработчиков ядра и традиции фирмы. Последнее не является лишь данью истории:
• во-первых, многие решения проверены десятилетиями, и именно это обстоятельство
обеспечивает высокую надежность БИС;
• во-вторых, использование новых моделей МК в значительной степени определяется
возможностью использования имеющихся наработок программного обеспечения. По
этому при разработке нового процессорного ядра фактор программной совместимости стоит на одном из первых мест.
Однако, к счастью, последнее не всегда берет верх в технической политике. Иначе принципиально новые решения были бы невозможными. Итак, сравним два процессорных ядра.
• Несмотря на кажущиеся принципиальные отличия, и в архитектуре MCS-51, и в НС08 нулевая страница оперативной памяти данных (00h - 0FFh) занимает особое место.
Для обращения именно к этой странице предназначены двухадресные команды, которые имеют короткий формат и малое время выполнения. Сравните:
MCS-51 HC08
MOV@ri,ad MOVadr,x+
MOVadd,ads MOVadr1,adr2
• MCS-51 использует 6 методов адресации, с учетом различных указателей при косвенной адресации и двухадресных команд общее число режимов адресации составляет
11. CPU08 использует 11 методов адресации, общее число режимов адресации с учетом двухадресных команд равно 16. Среди последних нет регистровой адресации, которая характерна для MCS-51, но присутствуют различные варианты индексной адресации, в том числе по указателю стека с авто инкрементированием, что позволяет создать
экономичные по длине кода компиляторы с языка Си. Именно поэтому ядро НС08 характеризуют как оптимизированное под использование языков высокого уровня.
• MCS-51 имеет значительно большее число команд для обмена с ячейками памяти
нулевой страницы, в то время как число команд обращения к памяти программ и рас
ширенной памяти данных сведено до минимума. Напротив, в НС08 число дополни
тельных команд обмена с нулевой страницей памяти равно четырем, но сразу 8 режимов адресации используется в каждой команде группы пересылки для адресации ячеек памяти полного адресного пространства.
• Набор арифметических и логических действий АЛУ того и другого ядра практически одинаковы. Но в НС08 набор методов адресации второго операнда (первый располагается в АСС) значительно шире. Причем диапазон адресов ячеек памяти второго
операнда в MCS-51 составляет 00h - 0FFh, в то время как в НС08 при выполнении
арифметических и логических действий доступно все адресное пространство в 64 К.
• Процессорное ядро НС08 значительно превосходит MCS-51 по числу команд условных переходов: 40 инструкций НС08 против 22 у MCS-51. Несомненным достоинством CPU08 является присутствие в перечне его команд инструкций ветвления по условиям >,≥, <,≤ по результатам сравнения операторов в формате как со знаком, так и без него.
• Прямо противоположна идеология подсистем прерывания. В MCS-51 при переходе на процедуру обслуживания прерывания в стеке сохраняется лишь адрес возврата в основную программу. Остальные регистры должны сохраняться программно. А в НС08 в процессе перехода к подпрограмме прерывания автоматически дополнительно сохраняются аккумулятор, регистр признаков и регистр X. Такое решение увеличивает время перехода к подпрограмме прерывания, но исключает ошибки при программировании. С другой стороны, ядро MCS-51 имеет фиксированные векторы прерывания, что требует занесения по адресам этих векторов дополнительных команд безусловного перехода. В то время как в НС08 векторы прерывания произвольно определяются пользователем, поэтому дополнительных команд безусловного перехода не требуется.
• Какое ядро предпочтительней? Однозначного ответа на этот вопрос не может дать никто. Ведь то, что требуется от процессорного ядра, это удовлетворять по быстродействию и объему адресуемой памяти для решаемой задачи и быть удобным в программировании. При этом следует учитывать, что в процессе выбора элементной базы МК для проекта будут оцениваться множество факторов, прямо не связанных с архитектурой процессорного ядра. Это набор и технические характеристики периферийных модулей, напряжение питания, мощность потребления, тип корпуса, возможности программирования и отладки, стоимостные показатели, и, наконец, доступность образцов кристаллов МК. Именно поэтому тесты на производительность МК проводятся, но по ним никогда не делается абсолютного заключения. Остается простор для творчества.