![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
Что-то я запутался с конвертацией компьютерных единиц измерения… Читаю строчку: "Процессоры i8086 и i8088 относятся к 16-разрядным процессорам. Максимальный объём адресуемой ими оперативной памяти составляет 1 мегабайт, что определяется использованием 20-разрядной адресации памяти.". Пробую представить себе этот процесс в голове. Если память 20-ти разрядная, значит можно сгенерировать 2^20=1048576 уникальных адресов. Каждый разряд – это фактически бит (ячейка), которая может иметь 0 или 1. Если переводить все это дело в мегабайты, получаем 1048576 / 8 (бит в байте) / 1024 (байт в килобайте) / 1024 (килобайт в мегабайте) = 0.125 Мегабайт (вместо 1 Mb). Где я неправ?
|
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
на 8 не надо делить! тк адресуется не бит а байт!
Это сообщение отредактировал(а) chaos - 23.9.2005, 15:05 |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
По отдельности это правильно, но вывод делаешь неверный Адресов доступно всего 1048576. Но для упрощения и увеличения быстродействия в памяти адресуются не биты, а целые байты, т.е. ты не можешь сказать запиши 1 в бит по адресу такому-то... Минимальной единицей адресации является байт. Для доступа к отдельным битам существуют специальные операции, но они не работают с памятью напрямую. А 20-разрядов (бит) это просто размер адреса. -------------------- Да. Именно так. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
угугу
если камешек 64х разрядный это получается что можно адресовать 17179869184 Гб памяти. Куда же столько |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
И все-равно я до конца не понял процесс, происходящий на аппаратном уровне. Если адрес 20-битный, а по утверждению Дрона адресация происходит побайтно, значит фактически используется только 16 разрядов из 20... , а значит мегабайт все равно неполучается. Подскажите хоть, что почитать (где мой пример хорошо разжеван)???
|
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 12 |
Почему??? 16 разрядные у тебя данные. а 20ти разрядные - адреса. Не путай. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Guest
Ты опять путаешь По порядку: 20-разрядность адреса -- означает то, адрес представляется 20 битами. При помощи 20 бит можно закодировать 1048576 значений (адресов). Каждому адресу соответствует 1 байт. В итоге получаем 1048576 байт. Минимальная единица адресации -- байт. Очень и очень грубо говоря, 20-разрядов -- это просто 20 проводов составляющих шину адреса. На каждом из них либо есть напряжение, либо нет. Все вместе они формируют какой-то адрес, передаваемый в память. В соответствии с этим адресом микросхема памяти выдаёт нужный байт на шину данных (а там 8-проводов для 8-бит, составляющих байт). Я уж не знаю как проще объяснить -------------------- Да. Именно так. |
|||
|
||||
| damir5 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.8.2005 Репутация: нет Всего: нет |
на самом деле используется не 20 разрядов а 2 регистра 16+16, по при этом они друг друга перекрывают. один 16 бит регистр отвечает за семент в 64К
а вот если эти регистры склеивать (но не ты ручками, а через himem) то можно адресовать больше одного метра Бил гейтс 1981: Одного мега всем должно хватить |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Это ты уже к i80286 процам перескочил, i8080 и i8086 (XT) больше метра адресовать не могли, и реально в машинах второй адресный регистр был зарезервирован, но не использовался, поэтому и макс. обьем памяти для XT состовлял 640Kb |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Это сам проц делает -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| damir5 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.8.2005 Репутация: нет Всего: нет |
ну про himem и проц мне все ясно, не будем вдаваться в детали,
а вот насчет 286 может и ошибаюсь. но вот про 640 помоему ошибочка. просто MS на свое усмотрение под досом разбили так. и все что было выше использовал для своих целей ОС. а 640 выделил для программ, обычно 480-512 использовалось для загрузки в память, а все что до 640 использовалось для TSR в нижней памяти. а вот адресовался все равно метр, а не 640к, а значит минимум 20 разрядов я конечно много уже чего забыл, но помоему какой то командой проца регистр с шины данных использовался, для адресации выше чем сегмент(64кб 2хх16) |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
MS тут не причём. Это всё IBM придумало Первые 640 Кб - память для программ (причём даже не все, начало памяти -- служебные области вроде таблицы прерываний) Потом 64 Кб -- видео-память. Остальные адреса вроде бы отображаются в ПЗУ -- но в этом я не уверен. -------------------- Да. Именно так. |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
это добавили уже в 286 проц - переход в защищенный режим |
|||
|
||||
| damir5 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.8.2005 Репутация: нет Всего: нет |
ну 640 ibm не могло придумать. это Фишки ОС как ей память использовать
640 - это 2 в какой степени, и иначе как объяснить почему 640 ? 640-1М использовалось и для 4 страниц видео ( 80стлб 25стр) + отображение ПЗУ в память, а не наоборот (последние 64 к из 1М) + TSR + таблицы загрузок фалов, хендлеры, хешы и тд. короче ядром |
|||
|
||||
| Mad |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
ближайшие степени, это 512 и 1024
а потвоему BIOS (или ПЗУ) адресоваться никак не должен ?
какраз нет, 640К-1М резервировались какраз апаратно. А вообщето "ядро" в ДОСе это сильная фраза |
||||||
|
|||||||
| damir5 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 14.8.2005 Репутация: нет Всего: нет |
да вы чего!!!!
у доса есть ядро!!!! оно загружало приложения, передавало управление, после заверншения получало. про 640-1м - скользкий вопрос. я согласен что это пространство было зарезервировано, но все же ... короче ядро использовало его ..... и пользовалось само... |
|||
|
||||
| Mad |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
согласен только в том, что понятие ЯДРО в данном слечае просто теологический спор
оно его не использовало, да и не могло использовать если тебе удасться освободить 640К памяти под ДОС (чтоб команда ДОС показала что свободно 640К), тогда я с тобой соглашусь, а вообщето ДОС и для себя использовал эти самые первые 640К |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
дет сад
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Ню-ню... Так расскажи нам в чём же дело? Я, например, честно признаюсь, что точно не знаю, как там на самом деле всё устроено и откуда у 640 Кбайт ноги растут. Когда читал, но так как реально применять не приходилось -- всё забыл. Добавлено @ 22:11 Модераторы: Может перенесите эту тему куда-нибудь в Ассемблер -- она всё равно изначально к С++ никакого отношения не имеет, а сейчас вообще чёрти куда ушла. В асме люди скорее всего должны быть лучше с архитектурой знакомы -------------------- Да. Именно так. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |