Думаю, ответ на этот вопрос будет не однозначным и наверное субъективного характера.Вот мое мнение:
Если имелись ввиду не только микропроцессоры но и более древние процессоры, то в те времена иметь 256 слов (8-битный адрес) для памяти программ было нормально в виду огромной для тех времен сложности и громоздкости самих ячеек памяти, к тому же тогдашние среднестатистические задачи для тех ЭВМ вряд ли имели большие объемы нежели 200 инструкций, и сами девайсы были скорее наглядно-демонстрационным пособием-дорогой игрушкой, нежели полезным. Программы тогда выглядели скорее как микро-код, а он не большой. Не было ни меню ни всплывающих окон... Как только вошли во вкус, сразу же и поднаростили адресное пространство , что сразу же усложнило процессор в целом. Если речь идет о микропроцессорах , то все началось с первенца 4004. Задачи уже были более сложными (программируемые микрокалькуляторы с тригонометрией, плавучкой, регистрами, терминалы,программируемые контроллеры для управления процессами), кроме того нужен был и задельчик на будущее, потому 4004 имел адресное пространство памяти программ в 4096 слов (восьми-битных инструкций) и + к этому еще и память данных на 5 килобит. Все последующие микропроцессоры были еще сложнее. Соответственно задачи для ЦП тех времен были под 2-4 килобайт-ное пространство памяти. Восьмибитки вышли достаточно скоро после 4-битных, поэтому их немного усовершенствовали до 16-разрядного адресного пространства, это было удобным благодаря "симетрия, красоты, логичности. Большинство задач долгое время устраивало 64к, поскольку не было еще мультимедиа и огромных объемов обрабатываемых данных. Потому Бил Гнйтс и сказал знаменитую фразу "64кб должно хватить всем". К тому же это все легко расширяется введением регистра страниц, где их может быть большое количество. Грабли только с кодом котором условия ветвлений должны прыгать по всему агромадному коду, но такие задачи были редкими и листание страниц тогда было просто не удобным (алгоритм становился сложнее), но возможность работать с большими объемами памяти по средствам переназначений и листания страниц все равно имелась, и это ни кого особо не напрягало. Ну а танцы с сегментом и смещением, это скорее всего модефицированый способ листания страниц с тем лишь удобством что имея код с адресами от ноля с явно указанными в коде адресами, его можно было запускать без каких либо изменений этих адресов начиная с любого начального адреса. Это и просто и удобно в определенных случаях, к тому же наращивать адрес сразу с 16 до 32 разрядов было не нужно. К тому же команды справляющиеся с такой адресацией были бы сложнее и выростала вся аппаратура и било это все по быстродействию. Наращивать на пару разрядов было бы не удобно и не экономично , а так два зайца убили, наростили по сути на пару разрядов но + еще и появилась возможность смещаться и запускать программы для нулевого адреса с любого с кратностью смещений. Стало очевидным что просо динамично смещаясь можно было бы запускать по очереди много программ (кусков в одном адресном пространстве) всех предназначенных для запуска с нуля, при этом физически их не перетасовывая по объему памяти, как пятнашки, чтобы текущая всегда была с ноля. Удобно для многозадачности, но это все же не менеджер памяти. Менеджер аппаратно помогает по серьезному управлять памятю, чтобы один код случайно не разросся так что налез на другой затирая и портя его. Потому в менеджере для каждого "куска" (задачи) есть специальные аппаратные "флажки", которые подымаются когда выходим за предустановленный предел куска и по этим флажкам управляющее ядро ориентируется и предпринимает соответствующие меры. Значить уже нужны регистры с флажками и регистры с пред-установками пределов, и нужно по числу задач. Ну если регистров этих есть на 8 задач, а задач больше , теряется эффективность, потому как при переключении задач придется еще и активно рулить этими регистрами. Самый удобный, на мой взгляд, 32-разрядный ЦП, поскольку 32 разряда данных может соответствовать 32 разрядам адреса, и такая картина будет достаточной по современным меркам (4-гигабайта пространство), к тому же команды с явно указанными такими адресами будут удобны, поскольку адрес весь адрес линейно будет указан всего лишь водном слове, ну а введя регистр смещения можно будет и смещаться при необходимости.
...




Ответить с цитированием