Микропроцессор должен быть шестнадцатиразрядным (формальное обоснование) -6


Берём всё бесконечное и неопределимое множество возможных реализаций микропроцессора и выделяем ключевые параметры, определяющие его архитектуру:

R — разрядность (ширина единицы памяти в битах)
A — количество адресуемых единиц памяти (объём адресного пространства)
C — количество исполняемых команд (объём командного пространства)

Задаём ключевое условие, способствующее целостности и завершённости информационной модели (и как следствие — эффективности и удобству в использовании устройства, реализованного на её базе):

A = C = 2 ^ R

Соблюдение данного условия означает, что любая ячейка способна вместить адрес любой другой ячейки, а также содержит исчерпывающую информацию о выполняемом действии. Уменьшение адресного пространства чревато ссылками на несуществующую память, а увеличение — избыточной информацией, необходимой для обеспечения возможности адресовать всю память. То же самое с командным пространством. Таким образом наше гипотетическое множество не перестаёт быть бесконечным, зато становится более определимым.

Существуют ли другие условия, удовлетворяющие перечисленным выше критериям и очевидные без углубления в детали разработки низкоуровневой архитектуры? Да, по крайней мере одно такое условие существует:

R = 2 ^ n

Соблюдение данного условия означает, что для задания номера любого бита в ячейке требуется целое число бит (опять же, избыток или недостаток здесь нежелателен из соображений удобства написания и надёжности работы машинного кода).

Очевидно, что n=4 — это минимальное приемлемое значение, поскольку 256 байт памяти при n=3 годится разве что для программирования ёлочных гирлянд. При n=5 получаем объём памяти, соответствующий последним достижениям в сфере ИТ. Но если считать главным назначением памяти, адресуемой процессором, хранение машинного кода (движка), а данные, которыми манипулирует этот движок, вынести за пределы адресного пространства (то есть если исходить из представления, что их носителями будут внешние устройства), то такой объём памяти (16 Гб) будет явно избыточным. Действительно, в ОЗУ современных компьютеров на долю машинного кода приходится лишь малая части памяти, всё остальное — данные. Кроме того, разделение кода и данных на аппаратном уровне вполне согласуется с представлением о хорошем стиле как проектирования микропроцессора, так и программирования на его асемблере. В мегабит машинного кода, написанного на эффективном асме (при условии вынесения данных за пределы адресуемого процессором ОЗУ), можно вместить полноценную ОСь. Если же этой памяти окажется недостаточно (например, для реализации многозадачности), можно использовать несколько процессоров, ведь «разделение труда» в области ИТ тоже, как правило, способствует удобству разработки программ и эффективности их функционирования. В принципе, для реализации многозадачности ничего не мешает обойтись и одним процессором: можно, скажем, реализовать быстрый интерфейс обмена данными между ОЗУ и внешней памятью — благо, небольшой объём ОЗУ позволяет обновлять его не последовательно, а параллельно (одним «кадром»), так что любой участок процессорной памяти можно будет перезаписать за считанные такты.

Я это всё к тому, что любые препятствия, вызванные ограничением объёма адресуемой памяти до одного мегабита, несложно обойти посредством аппаратной реализации обмена данными с внешней памятью. Преимуществу же использования именно шестнадцатиразрядной архитектуры, помимо приведённых выше соображений, можно дать формальное обоснование, а именно:

R % n = 0

Соблюдение данного условия означает, что в одной ячейке памяти можно разместить целое число значений в диапазоне [ 0..R-1 ] (например, для n=5 это условие не соблюдается — в данном случае R, равное 32-м битам, не делится на 5 без остатка). Поскольку разрядность процессора является фундаментальным параметром, такое свойство может оказаться в дальнейшем весьма полезным.

Ну и наконец главным аргументом в пользу числа 16, положенного в основу низкоуровневой архитектуры, является то обстоятельство, что оно задаёт оптимальный объём командного пространства — примером тому может послужить процессор PDP-11 (впрочем как и большинство современных процессоров, расширение разрядности которых практически не сказалось на их системе команд).

Для наглядности приведу последовательность, отражающую фундаментальность приведённых выше обоснований:

2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4 ( = n )
2 ^ 4 = 16 ( = R )
2 ^ 16 = 65536 ( = A = C )

Стоит также упомянуть о том, что с тех пор как ИТ начали развиваться бешенными темпами, не было предложено, пожалуй, ни одного завершённого решения. Даже PDP-11 (в моём представлении наиболее удачная реализация) вряд ли использует командное пространство больше, чем на 50% — довольно значительную его часть составляет резервный код, а также способы адресации, формально допустимые (так как попадают под общие правила), но реально неиспользуемые, поскольку они либо приводят к гарантированному зависанию программы ( MOV -(PC),… ), либо просто бесполезны ( MOV R1,R1 ).

Другими словами, в области информационных технологий до сих пор не изобрели «колесо», ну или все они не совсем «круглые» — что делает «езду на велосипеде» не совсем удобной. Возможно именно по этой причине «первобытные» компьютеры (БК, ДВК, Спектрум, ...) и по сей день пользуются большим спросом. Мне, например, как человеку, искушённому в программировании, современные программные технологии, при всей их мощности и надёжности, напоминают Франкенштейна, вызывая противоречия эстетического характера. Хотя это скорее радует, чем огорчает, ибо изобретение неизобретённых колёс является моим хобби. Возможно, не один я задумываюсь в этом направлении и кто-нибудь ещё сочтёт такое занятие интересным.




К сожалению, не доступен сервер mySQL