СРАВНИТЕЛЬНЫЙ АНАЛИЗ СИСТЕМЫ КОМАНД MCS-51 И НС08

В предыдущих разделах вы познакомились с двумя представителями 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 векторы прерывания произвольно определяются пользо­вателем, поэтому дополнительных команд безусловного перехода не требуется.

• Какое ядро предпочтительней? Однозначного ответа на этот вопрос не может дать никто. Ведь то, что требуется от процессорного ядра, это удовлетворять по быстродей­ствию и объему адресуемой памяти для решаемой задачи и быть удобным в программи­ровании. При этом следует учитывать, что в процессе выбора элементной базы МК для проекта будут оцениваться множество факторов, прямо не связанных с архитектурой процессорного ядра. Это набор и технические характеристики периферийных модулей, напряжение питания, мощность потребления, тип корпуса, возможности программирова­ния и отладки, стоимостные показатели, и, наконец, доступность образцов кристаллов МК. Именно поэтому тесты на производительность МК проводятся, но по ним никогда не делается абсолютного заключения. Остается простор для творчества.