| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Конвертация битов в мегабайты.... |
| Автор: Guest 23.9.2005, 14:59 |
| Что-то я запутался с конвертацией компьютерных единиц измерения… Читаю строчку: "Процессоры i8086 и i8088 относятся к 16-разрядным процессорам. Максимальный объём адресуемой ими оперативной памяти составляет 1 мегабайт, что определяется использованием 20-разрядной адресации памяти.". Пробую представить себе этот процесс в голове. Если память 20-ти разрядная, значит можно сгенерировать 2^20=1048576 уникальных адресов. Каждый разряд – это фактически бит (ячейка), которая может иметь 0 или 1. Если переводить все это дело в мегабайты, получаем 1048576 / 8 (бит в байте) / 1024 (байт в килобайте) / 1024 (килобайт в мегабайте) = 0.125 Мегабайт (вместо 1 Mb). Где я неправ? |
| Автор: chaos 23.9.2005, 15:05 |
| на 8 не надо делить! тк адресуется не бит а байт! |
| Автор: Дрон 23.9.2005, 15:07 | ||
По отдельности это правильно, но вывод делаешь неверный Адресов доступно всего 1048576. Но для упрощения и увеличения быстродействия в памяти адресуются не биты, а целые байты, т.е. ты не можешь сказать запиши 1 в бит по адресу такому-то... Минимальной единицей адресации является байт. Для доступа к отдельным битам существуют специальные операции, но они не работают с памятью напрямую. А 20-разрядов (бит) это просто размер адреса. |
| Автор: chaos 23.9.2005, 15:10 |
| угугу если камешек 64х разрядный это получается что можно адресовать 17179869184 Гб памяти. Куда же столько |
| Автор: Guest 24.9.2005, 16:43 |
| И все-равно я до конца не понял процесс, происходящий на аппаратном уровне. Если адрес 20-битный, а по утверждению Дрона адресация происходит побайтно, значит фактически используется только 16 разрядов из 20... , а значит мегабайт все равно неполучается. Подскажите хоть, что почитать (где мой пример хорошо разжеван)??? |
| Автор: Dreamer_0x01 24.9.2005, 17:42 | ||
Почему??? 16 разрядные у тебя данные. а 20ти разрядные - адреса. Не путай. |
| Автор: Дрон 24.9.2005, 18:13 |
| Guest Ты опять путаешь По порядку: 20-разрядность адреса -- означает то, адрес представляется 20 битами. При помощи 20 бит можно закодировать 1048576 значений (адресов). Каждому адресу соответствует 1 байт. В итоге получаем 1048576 байт. Минимальная единица адресации -- байт. Очень и очень грубо говоря, 20-разрядов -- это просто 20 проводов составляющих шину адреса. На каждом из них либо есть напряжение, либо нет. Все вместе они формируют какой-то адрес, передаваемый в память. В соответствии с этим адресом микросхема памяти выдаёт нужный байт на шину данных (а там 8-проводов для 8-бит, составляющих байт). Я уж не знаю как проще объяснить |
| Автор: damir5 30.9.2005, 07:12 |
| на самом деле используется не 20 разрядов а 2 регистра 16+16, по при этом они друг друга перекрывают. один 16 бит регистр отвечает за семент в 64К а вот если эти регистры склеивать (но не ты ручками, а через himem) то можно адресовать больше одного метра Бил гейтс 1981: Одного мега всем должно хватить |
| Автор: Mad 30.9.2005, 09:59 | ||
Это ты уже к i80286 процам перескочил, i8080 и i8086 (XT) больше метра адресовать не могли, и реально в машинах второй адресный регистр был зарезервирован, но не использовался, поэтому и макс. обьем памяти для XT состовлял 640Kb |
| Автор: Romikgy 30.9.2005, 13:33 | ||
Это сам проц делает |
| Автор: damir5 30.9.2005, 18:24 |
| ну про himem и проц мне все ясно, не будем вдаваться в детали, а вот насчет 286 может и ошибаюсь. но вот про 640 помоему ошибочка. просто MS на свое усмотрение под досом разбили так. и все что было выше использовал для своих целей ОС. а 640 выделил для программ, обычно 480-512 использовалось для загрузки в память, а все что до 640 использовалось для TSR в нижней памяти. а вот адресовался все равно метр, а не 640к, а значит минимум 20 разрядов я конечно много уже чего забыл, но помоему какой то командой проца регистр с шины данных использовался, для адресации выше чем сегмент(64кб 2хх16) |
| Автор: Дрон 30.9.2005, 18:32 | ||
MS тут не причём. Это всё IBM придумало Первые 640 Кб - память для программ (причём даже не все, начало памяти -- служебные области вроде таблицы прерываний) Потом 64 Кб -- видео-память. Остальные адреса вроде бы отображаются в ПЗУ -- но в этом я не уверен. |
| Автор: Mad 30.9.2005, 18:33 | ||
это добавили уже в 286 проц - переход в защищенный режим |
| Автор: damir5 30.9.2005, 18:45 |
| ну 640 ibm не могло придумать. это Фишки ОС как ей память использовать 640 - это 2 в какой степени, и иначе как объяснить почему 640 ? 640-1М использовалось и для 4 страниц видео ( 80стлб 25стр) + отображение ПЗУ в память, а не наоборот (последние 64 к из 1М) + TSR + таблицы загрузок фалов, хендлеры, хешы и тд. короче ядром |
| Автор: Mad 30.9.2005, 19:00 | ||||||
ближайшие степени, это 512 и 1024
а потвоему BIOS (или ПЗУ) адресоваться никак не должен ?
какраз нет, 640К-1М резервировались какраз апаратно. А вообщето "ядро" в ДОСе это сильная фраза |
| Автор: damir5 30.9.2005, 19:14 |
| да вы чего!!!! у доса есть ядро!!!! оно загружало приложения, передавало управление, после заверншения получало. про 640-1м - скользкий вопрос. я согласен что это пространство было зарезервировано, но все же ... короче ядро использовало его ..... и пользовалось само... |
| Автор: Mad 30.9.2005, 19:20 | ||||
согласен только в том, что понятие ЯДРО в данном слечае просто теологический спор
оно его не использовало, да и не могло использовать если тебе удасться освободить 640К памяти под ДОС (чтоб команда ДОС показала что свободно 640К), тогда я с тобой соглашусь, а вообщето ДОС и для себя использовал эти самые первые 640К |
| Автор: Guest 30.9.2005, 19:20 |
| дет сад |
| Автор: Дрон 30.9.2005, 22:07 | ||
Ню-ню... Так расскажи нам в чём же дело? Я, например, честно признаюсь, что точно не знаю, как там на самом деле всё устроено и откуда у 640 Кбайт ноги растут. Когда читал, но так как реально применять не приходилось -- всё забыл. Добавлено @ 22:11 Модераторы: Может перенесите эту тему куда-нибудь в Ассемблер -- она всё равно изначально к С++ никакого отношения не имеет, а сейчас вообще чёрти куда ушла. В асме люди скорее всего должны быть лучше с архитектурой знакомы |