Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конвертация битов в мегабайты.... 
:(
    Опции темы
Guest
Дата 23.9.2005, 14:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Что-то я запутался с конвертацией компьютерных единиц измерения… Читаю строчку: "Процессоры 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



на 8 не надо делить! тк адресуется не бит а байт!

Это сообщение отредактировал(а) chaos - 23.9.2005, 15:05
PM WWW   Вверх
Дрон
Дата 23.9.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Цитата(Guest @ 23.9.2005, 15:59)
Если память 20-ти разрядная, значит можно сгенерировать 2^20=1048576 уникальных адресов. Каждый разряд – это фактически бит (ячейка), которая может иметь 0 или 1.

По отдельности это правильно, но вывод делаешь неверный smile

Адресов доступно всего 1048576. Но для упрощения и увеличения быстродействия в памяти адресуются не биты, а целые байты, т.е. ты не можешь сказать запиши 1 в бит по адресу такому-то... Минимальной единицей адресации является байт.
Для доступа к отдельным битам существуют специальные операции, но они не работают с памятью напрямую.

А 20-разрядов (бит) это просто размер адреса.





--------------------
Да. Именно так.
PM   Вверх
chaos
Дата 23.9.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



угугу
если камешек 64х разрядный это получается что можно адресовать
17179869184 Гб памяти. Куда же столько

PM WWW   Вверх
Guest
Дата 24.9.2005, 16:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И все-равно я до конца не понял процесс, происходящий на аппаратном уровне. Если адрес 20-битный, а по утверждению Дрона адресация происходит побайтно, значит фактически используется только 16 разрядов из 20... , а значит мегабайт все равно неполучается. Подскажите хоть, что почитать (где мой пример хорошо разжеван)???
  Вверх
Dreamer_0x01
Дата 24.9.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



Цитата
Если адрес 20-битный, а по утверждению Дрона адресация происходит побайтно, значит фактически используется только 16 разрядов из 20...


Почему???

16 разрядные у тебя данные.
а 20ти разрядные - адреса. Не путай.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Дрон
Дата 24.9.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Guest
Ты опять путаешь smile

По порядку:
20-разрядность адреса -- означает то, адрес представляется 20 битами.
При помощи 20 бит можно закодировать 1048576 значений (адресов).
Каждому адресу соответствует 1 байт.
В итоге получаем 1048576 байт.

Минимальная единица адресации -- байт.

Очень и очень грубо говоря, 20-разрядов -- это просто 20 проводов составляющих шину адреса. На каждом из них либо есть напряжение, либо нет. Все вместе они формируют какой-то адрес, передаваемый в память. В соответствии с этим адресом микросхема памяти выдаёт нужный байт на шину данных (а там 8-проводов для 8-бит, составляющих байт).

Я уж не знаю как проще объяснить smile


--------------------
Да. Именно так.
PM   Вверх
damir5
Дата 30.9.2005, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.8.2005

Репутация: нет
Всего: нет



на самом деле используется не 20 разрядов а 2 регистра 16+16, по при этом они друг друга перекрывают. один 16 бит регистр отвечает за семент в 64К

а вот если эти регистры склеивать (но не ты ручками, а через himem) то можно адресовать больше одного метра

Бил гейтс 1981: Одного мега всем должно хватить smile

PM MAIL   Вверх
Mad
Дата 30.9.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(damir5 @ 30.9.2005, 06:12)
на самом деле используется не 20 разрядов а 2 регистра 16+16, по при этом они друг друга перекрывают. один 16 бит регистр отвечает за семент в 64К

а вот если эти регистры склеивать (но не ты ручками, а через himem) то можно адресовать больше одного метра


Это ты уже к i80286 процам перескочил, i8080 и i8086 (XT) больше метра адресовать не могли, и реально в машинах второй адресный регистр был зарезервирован, но не использовался, поэтому и макс. обьем памяти для XT состовлял 640Kb smile


--------------------
user posted image
PM MAIL   Вверх
Romikgy
Дата 30.9.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(damir5 @ 30.9.2005, 07:12)
а вот если эти регистры склеивать (но не ты ручками, а через himem)

Это сам проц делает smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
damir5
Дата 30.9.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.8.2005

Репутация: нет
Всего: нет



ну про himem и проц мне все ясно, не будем вдаваться в детали,
а вот насчет 286 может и ошибаюсь.

но вот про 640 помоему ошибочка. просто MS на свое усмотрение под досом разбили так. и все что было выше использовал для своих целей ОС. а 640 выделил для программ, обычно 480-512 использовалось для загрузки в память, а все что до 640 использовалось для TSR в нижней памяти.
а вот адресовался все равно метр, а не 640к, а значит минимум 20 разрядов

я конечно много уже чего забыл, но помоему какой то командой проца регистр с шины данных использовался, для адресации выше чем сегмент(64кб 2хх16)



PM MAIL   Вверх
Дрон
Дата 30.9.2005, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Цитата(damir5 @ 30.9.2005, 19:24)
о вот про 640 помоему ошибочка. просто MS на свое усмотрение под досом разбили так

MS тут не причём.
Это всё IBM придумало smile

Первые 640 Кб - память для программ (причём даже не все, начало памяти -- служебные области вроде таблицы прерываний)

Потом 64 Кб -- видео-память.

Остальные адреса вроде бы отображаются в ПЗУ -- но в этом я не уверен.


--------------------
Да. Именно так.
PM   Вверх
Mad
Дата 30.9.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(damir5 @ 30.9.2005, 17:24)
какой то командой проца регистр с шины данных использовался, для адресации выше чем сегмент(64кб 2хх16)

это добавили уже в 286 проц - переход в защищенный режим


--------------------
user posted image
PM MAIL   Вверх
damir5
Дата 30.9.2005, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.8.2005

Репутация: нет
Всего: нет



ну 640 ibm не могло придумать. это Фишки ОС как ей память использовать
640 - это 2 в какой степени, и иначе как объяснить почему 640 ?

640-1М использовалось и для 4 страниц видео ( 80стлб 25стр)
+ отображение ПЗУ в память, а не наоборот (последние 64 к из 1М)
+ TSR
+ таблицы загрузок фалов, хендлеры, хешы и тд.
короче ядром




PM MAIL   Вверх
Mad
Дата 30.9.2005, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 7
Всего: 19



Цитата(damir5 @ 30.9.2005, 17:45)
640 - это 2 в какой степени

ближайшие степени, это 512 и 1024 smile

Цитата(damir5 @ 30.9.2005, 17:45)
отображение ПЗУ в память

а потвоему BIOS (или ПЗУ) адресоваться никак не должен ?

Цитата(damir5 @ 30.9.2005, 17:45)
короче ядром

какраз нет, 640К-1М резервировались какраз апаратно.

А вообщето "ядро" в ДОСе это сильная фраза smile и как потвоему однозадачная система могла контролировать и регламинтировать доступ к памяти ? smile


--------------------
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.