Как определить количество ячеек в оперативной памяти
Оперативная память (RAM — Random Access Метопy) — это массив кристаллических ячеек, способных хранить данные. Существует много различных типов оперативной памяти, но, с точки зрения физического принципа действия, различают динамическую память (DRAM) и статическую память (SRAM).
Ячейки динамической памяти (DRAM) можно представить в виде микроконденсаторов, способных накапливать заряд на своих обкладках. Это наиболее распространенный и экономически доступный тип памяти. Недостатки этого типа связаны, во-первых, с тем, что как при заряде, так и при разряде конденсаторов неизбежны переходные процессы, то есть запись данных происходит сравнительно медленно. Второй важный недостаток связан с тем, что заряды ячеек имеют свойство рассеиваться в пространстве, причем весьма быстро. Если оперативную память постоянно не “подзаряжать”, утрата данных происходит через несколько сотых долей секунды. Для борьбы с этим явлением в компьютере происходит постоянная регенерация (освежение, подзарядка) ячеек оперативной памяти. Регенерация осуществляется несколько десятков раз в секунду и вызывает непроизводительный расход ресурсов вычислительной системы.
Ячейки статической памяти (SRAM) можно представить как электронные микроэлементы — триггеры, состоящие из нескольких транзисторов. В триггере хранится не заряд, а состояние (включен/выключен), поэтому этот тип памяти обеспечивает более высокое быстродействие, хотя технологически он сложнее и, соответственно, дороже.
Микросхемы динамической памяти используют в качестве основной оперативной памяти компьютера. Микросхемы статической памяти используют в качестве вспомогательной памяти (так называемой кэш-памяти), предназначенной для оптимизации работы процессора.
Каждая ячейка памяти имеет свой адрес, который выражается числом. В настоящее время в процессорах Intel Pentium и некоторых других принята 32-разрядная адресация, а это означает, что всего независимых адресов может быть 2 32 . Таким образом, в современных компьютерах возможна непосредственная адресация к полю памяти размером 2 32 = 4294967296 байт (4,3 Гбайт). Однако это отнюдь не означает, что именно столько оперативной памяти непременно должно быть в компьютере. Предельный размер поля оперативной памяти, установленной в компьютере, определяется микропроцессорным комплектом (чипсетом) материнской платы и обычно составляет несколько сот Мбайт.
Одна адресуемая ячейка содержит восемь двоичных ячеек, в которых можно сохранить 8 бит, то есть один байт данных. Таким образом, адрес любой ячейки памяти можно выразить четырьмя байтами.
Представление о том, сколько оперативной памяти должно быть в типовом компьютере, непрерывно меняется. В середине 80-х годов ноле памяти размером 1 Мбайт казалось огромным, в начале 90-х годов достаточным считался объем 4 Мбайт, к середине 90-х годов он увеличился до 8 Мбайт, а затем и до 16 Мбайт. Сегодня минимальным считается размер оперативной памяти 32 Мбайт, а обычным — 64 Мбайт. Очень скоро и эта величина будет превышена в 2-4 раза даже для моделей массового потребления.
Оперативная память к компьютере размещается на стандартных панельках, называемых модулями. Модули оперативной памяти вставляют в соответствующие разъемы на материнской плате. Коли к разъемам есть удобный доступ, то операцию можно выполнять своими руками. Если удобного доступа нет, может потребоваться неполная разборка узлов системного блока, и в таких случаях операцию поручают специалистам.
Конструктивно модули памяти имеют два исполнения — однорядные (SIMM-модули) и двухрядные (DIММ-модули). Многие модели материнских плат имеют разъемы как того, гак и другого типа, по комбинировать на одной плате модули разных типов нельзя.
Основными характерно гиками модулей оперативной памяти являются объем памяти и время доступа. SIMM-модули поставляются объемами 4, 8, 16, 32 Мбайт, а DIMM-модули — 16, 32, 64, 128 Мбайт и более. Время доступа показывает, сколько времени необходимо для обращения к ячейкам памяти, чем оно меньше, тем лучше. Время доступа измеряется в миллиардных долях секунды (наносекундах, нс). Для современных DIMM-модулей оно составляет 7-10 нс.
Основные темы параграфа:
- представление целых чисел;
- размер ячейки и диапазон значений чисел;
- особенности работы компьютера с целыми числами;
- представление вещественных чисел;
- особенности работы компьютера с вещественными числами.
Примеры расчета числа адресуемых ячеек
В самом элементарном случае, если имеется шина адреса всего с одним разрядом, мы можем адресовать только две ячейки памяти с адресами 0 и 1.
Для шины адреса с двумя разрядами возможны комбинации:
То есть, можно адресовать 4 ячейки памяти.
С помощью трех разрядной шины можно адресовать 8 ячеек, с помощью четырех разрядной – 16 и т.д.
В общем случае количество различных комбинаций для n разрядного двоичного числа (представляющего собой состояние шины адреса) можно найти как 2 n .
Для 32 битной шины адреса число адресуемых ячеек памяти равно 2 32 = 4294967296 с адресами от 0 до 4294967295.
Как определить разрядность шины адреса?
Разрядность шины данных определяется разрядностью процессора, т. е. количеством двоичных разрядов, которые процессор обрабатывает за один такт. Разрядность процессоров постоянно увеличивалась по мере развития компьютерной техники.
Какая шина является двунаправленной?
Шина данных всегда двунаправленная, так как предполагает передачу информации в обоих направлениях. Наиболее часто встречающийся тип выходного каскада для линий этой шины — выход с тремя состояниями. Обычно шина данных имеет 8, 16, 32 или 64 разряда.
Какой максимальный объем памяти может адресовать процессор с 32 разрядной шиной адреса?
32-разрядный процессор может адресовать не более 2 ^ 32 отдельных байтов памяти (около 4 ГБ), но наличие 1 ГБ памяти приведет к 1 * 1024 * 1024 * 1024 адресуемым байтам памяти (хотя у вас, вероятно, все еще будет виртуальное адресное пространство 2 ^ 32). ).
Чему равна разрядность адреса?
Каждое устройство или ячейка оперативной памяти имеет свой адрес. Адрес передается по адресной шине от процессора к оперативной памяти и устройствам. Разрядность шины адреса определяется объемом адресуемой памяти. Количество адресуемых ячеек можно рассчитать по формуле: N = 2I, где I – разрядность шины адреса.
Как вычислить количество адресуемых ячеек памяти?
Количество адресуемых ячеек вычисляется по формуле N=2^i, где i -разрядность.
Чем выше разрядность адресной шины тем?
Чем выше разрядность шины данных, тем больший объем данных можно передать по ней за некоторый определенный промежуток времени и тем выше быстродействие компьютера. В первых ПК использовался процессор Intel 8088. … Другая группа линий образует адресную шину. Эта шина используется для адресации.
Вопросы и задания
2. Как в памяти компьютера представляются целые положительные и отрицательные числа?
3. Любое целое число можно рассматривать как вещественное, но с нулевой дробной частью. Обоснуйте целесообразность наличия особых способов компьютерного представления целых чисел.
а) 01001100;
б) 00010101.
7. Запишите следующие числа в естественной форме:
а) 0,3800456 • 10 2 ;
б) 0,245 • 10 -3 ;
в) 1,256900Е+5;
г) 9,569120Е-3.
8. Запишите число 2010,010210 пятью различными способами в экспоненциальной форме.
9. Запишите следующие числа в экспоненциальной форме с нормализованной мантиссой — правильной дробью, имеющей после запятой цифру, отличную от нуля:
10. Изобразите схему, связывающую основные понятия, рассмотренные в данном параграфе.
Как определяется разрядность адресной шины?
шина адреса является однонаправленной. Разрядность шины адреса определяет объем адресуемой процессором памяти. Имеются 16-, 20-, 24-и 32-разрядные шины адреса. В персональных компьютерах величина адресного пространства процессора и величина фактически установленной оперативной памяти практически всегда различаются.
Какие сигналы передаются по шине управления?
Ши́на управле́ния — компьютерная шина, по которой передаются сигналы, определяющие характер обмена информацией по магистрали. Сигналы управления определяют, какую операцию (считывание или запись информации из памяти) нужно производить, синхронизируют обмен информацией между устройствами и т. д.
1.2.2. Представление вещественных чисел
Любое вещественное число А может быть записано в экспоненциальной форме:
где:
m — мантисса числа;
q — основание системы счисления;
p — порядок числа.
Например, число 472 000 000 может быть представлено так: 4,72 • 10 8 , 47,2 • 10 7 , 472,0 • 10 6 и т. д.
С экспоненциальной формой записи чисел вы могли встречаться при выполнении вычислений с помощью калькулятора, когда в качестве ответа получали записи следующего вида: 4.72Е+8.
Здесь знак «Е» обозначает основание десятичной системы счисления и читается как «умножить на десять в степени».
Из приведённого выше примера видно, что положение запятой в записи числа может изменяться.
Для единообразия мантиссу обычно записывают как правильную дробь, имеющую после запятой цифру, отличную от нуля. В этом случае число 472 000 000 будет представлено как 0,472 • 10 9 .
Вещественное число может занимать в памяти компьютера 32 или 64 разряда. При этом выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
Пример:
Диапазон представления вещественных чисел определяется количеством разрядов, отведённых для хранения порядка числа, а точность определяется количеством разрядов, отведённых для хранения мантиссы.
Максимальное значение порядка числа для приведённого выше примера составляет 11111112 = 12710, и, следовательно, максимальное значение числа:
0,11111111111111111111111 • 10 1111111
Попытайтесь самостоятельно выяснить, каков десятичный эквивалент этой величины.
Широкий диапазон представления вещественных чисел важен для решения научных и инженерных задач. Вместе с тем следует понимать, что алгоритмы обработки таких чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел.
Какой вид информации на шине адреса микропроцессора?
Шина адреса несет адрес (номер) той ячейки памяти или того порта ввода-вывода, который взаимодействует с микропроцессором. На шину адреса микропроцессор выводит информацию о номере (адресе) той ячейки памяти или устройства, с которым он собирается производить обмен информацией.
Какая шина обладает самой высокой тактовой частотой?
Система Pentium 4 (Socket 423 или Socket 478), созданная на основе hub-архитектуры, показана на рисунке ниже. Особенностью этой конструкции является шина процессора с тактовой частотой 400/533/800 МГц и пропускной способностью соответственно 3200/4266/6400 Мбайт/с. Сегодня это самая быстродействующая шина.
Электронное приложение к уроку
Файлы | Материалы урока | Ресурсы ЭОР |
Cкачать материалы урока
За последнюю неделю дважды объяснял людям как организована работа с памятью в х86, с целью чтобы не объяснять в третий раз написал эту статью.
И так, чтобы понять организацию памяти от вас потребуется знания некоторых базовых понятий, таких как регистры, стек и тд. Я по ходу попробую объяснить и это на пальцах, но очень кратко потому что это не тема для этой статьи. Итак начнем.
Как известно программист, когда пишет программы работает не с физическим адресом, а только с логическим. И то если он программирует на ассемблере. В том же Си ячейки памяти от программиста уже скрыты указателями, для его же удобства, но если грубо говорить указатель это другое представление логического адреса памяти, а в Java и указателей нет, совсем плохой язык. Однако грамотному программисту не помешают знания о том как организована память хотя бы на общем уровне. Меня вообще очень огорчают программисты, которые не знают как работает машина, обычно это программисты Java и прочие php-парни, с квалификацией ниже плинтуса.
Так ладно, хватит о печальном, переходим к делу.
Рассмотрим адресное пространство программного режима 32 битного процессора (для 64 бит все по аналогии)
Адресное пространство этого режима будет состоять из 2^32 ячеек памяти пронумерованных от 0 и до 2^32-1.
Программист работает с этой памятью, если ему нужно определить переменную, он просто говорит ячейка памяти с адресом таким-то будет содержать такой-то тип данных, при этом сам програмист может и не знать какой номер у этой ячейки он просто напишет что-то вроде:
int data = 10;
компьютер поймет это так: нужно взять какую-то ячейку с номером стопицот и поместить в нее цело число 10. При том про адрес ячейки 18894 вы и не узнаете, он от вас будет скрыт.
Все бы хорошо, но возникает вопрос, а как компьютер ищет эту ячейку памяти, ведь память у нас может быть разная:
3 уровень кэша
2 уровень кэша
1 уровень кэша
основная память
жесткий диск
Это все разные памяти, но компьютер легко находит в какой из них лежит наша переменная int data.
Этот вопрос решается операционной системой совместно с процессором.
Вся дальнейшая статья будет посвящена разбору этого метода.
Архитектура х86 поддерживает стек.
Стек это непрерывная область оперативной памяти организованная по принципу стопки тарелок, вы не можете брать тарелки из середины стопки, можете только брать верхнюю и класть тарелку вы тоже можете только на верх стопки.
В процессоре для работы со стеком организованны специальные машинные коды, ассемблерные мнемоники которых выглядят так:
push operand
помещает операнд в стек
pop operand
изымает из вершины стека значение и помещает его в свой операнд
Стек в памяти растет сверху вниз, это значит что при добавлении значения в него адрес вершины стека уменьшается, а когда вы извлекаете из него, то адрес вершины стека увеличивается.
Теперь кратко рассмотрим что такое регистры.
Это ячейки памяти в самом процессоре. Это самый быстрый и самый дорогой тип памяти, когда процессор совершает какие-то операции со значением или с памятью, он берет эти значения непосредственно из регистров.
В процессоре есть несколько наборов логик, каждая из которых имеет свои машинные коды и свои наборы регистров.
Basic program registers (Основные программные регистры) Эти регистры используются всеми программами с их помощью выполняется обработка целочисленных данных.
Floating Point Unit registers (FPU) Эти регистры работают с данными представленными в формате с плавающей точкой.
Еще есть MMX и XMM registers эти регистры используются тогда, когда вам надо выполнить одну инструкцию над большим количеством операндов.
Рассмотрим подробнее основные программные регистры. К ним относятся восемь 32 битных регистров общего назначения: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP
Для того чтобы поместить в регистр данные, или для того чтобы изъять из регистра в ячейку памяти данные используется команда mov:
mov eax, 10
загружает число 10 в регистр eax.
mov data, ebx
копирует число, содержащееся в регистре ebx в ячейку памяти data.
Регистр ESP содержит адрес вершины стека.
Кроме регистров общего назначения, к основным программным регистрам относят шесть 16битных сегментных регистров: CS, DS, SS, ES, FS, GS, EFLAGS, EIP
EFLAGS показывает биты, так называемые флаги, которые отражают состояние процессора или характеризуют ход выполнения предыдущих команд.
В регистре EIP содержится адрес следующей команды, которая будет выполнятся процессором.
Я не буду расписывать регистры FPU, так как они нам не понадобятся. Итак наше небольшое отступление про регистры и стек закончилось переходим обратно к организации памяти.
Как вы помните целью статьи является рассказ про преобразование логической памяти в физическую, на самом деле есть еще промежуточный этап и полная цепочка выглядит так:
Логический адрес --> Линейный (виртуальный)--> Физический
Все линейное адресное пространство разбито на сегменты. Адресное пространство каждого процесса имеет по крайней мере три сегмента:
Сегмент кода. (содержит команды из нашей программы, которые будут исполнятся.)
Сегмент данных. (Содержит данные, то бишь переменные)
Сегмент стека, про который я писал выше.
Линейный адрес вычисляется по формуле:
линейный адрес=Базовый адрес сегмента(на картинке это начало сегмента) + смещение
Сегмент кода
Базовый адрес сегмента кода берется из регистра CS. Значение смещения для сегмента кода берется из регистра EIP, в котором хранится адрес инструкции, после исполнения которой, значение EIP увеличивается на размер этой команды. Если команда занимает 4 байта, то значение EIP увеличивается на 4 байта и будет указывать уже на следующую инструкцию. Все это делается автоматически без участия программиста.
Сегментов кода может быть несколько в нашей памяти. В нашем случае он один.
Сегмент данных
Данные загружаются в регистры DS, ES, FS, GS
Это значит что сегментов данных может быть до 4х. На нашей картинке он один.
Смещение внутри сегмента данных задается как операнд команды. По дефолту используется сегмент на который указывает регистр DS. Для того чтобы войти в другой сегмент надо это непосредственно указать в команде префикса замены сегмента.
Сегмент стека
Используемый сегмент стека задается значением регистра SS.
Смещение внутри этого сегмента представлено регистром ESP, который указывает на вершину стека, как вы помните.
Сегменты в памяти могут друг друга перекрывать, мало того базовый адрес всех сегментов может совпадать например в нуле. Такой вырожденный случай называется линейным представлением памяти. В современных системах, память как правило так организована.
Теперь рассмотрим определение базовых адресов сегмента, я писал что они содержаться в регистрах SS, DS, CS, но это не совсем так, в них содержится некий 16 битный селектор, который указывает на некий дескриптор сегментов, в котором уже хранится необходимый адрес.
Так выглядит селектор, в тринадцати его битах содержится индекс дескриптора в таблице дескрипторов. Не хитро посчитать будет что 2^13 = 8192 это максимальное количество дескрипторов в таблице.
Вообще дескрипторных таблиц бывает два вида GDT и LDT Первая называется глобальная таблица дескрипторов, она в системе всегда только одна, ее начальный адрес, точнее адрес ее нулевого дескриптора хранится в 48 битном системном регистре GDTR. И с момента старта системы не меняется и в свопе не принимает участия.
А вот значения дескрипторов могут меняться. Если в селекторе бит TI равен нулю, тогда процессор просто идет в GDT ищет по индексу нужный дескриптор с помощью которого осуществляет доступ к этому сегменту.
Пока все просто было, но если TI равен 1 тогда это означает что использоваться будет LDT. Таблиц этих много, но использоваться в данный момент будет та селектор которой загружен в системный регистр LDTR, который в отличии от GDTR может меняться.
Индекс селектора указывает на дескриптор, который указывает уже не на базовый адрес сегмента, а на память в котором хранится локальная таблица дескрипторов, точнее ее нулевой элемент. Ну а дальше все так же как и с GDT. Таким образом во время работы локальные таблицы могут создаваться и уничтожаться по мере необходимости. LDT не могут содержать дескрипторы на другие LDT.
Итак мы знаем как процессор добирается до дескриптора, а что содержится в этом дескрипторе посмотрим на картинке:
Дескрипторы состоит из 8 байт.
Биты с 15-39 и 56-63 содержат линейный базовый адрес описываемым данным дескриптором сегмента. Напомню нашу формулу для нахождения линейного адреса:
линейный адрес = базовый адрес + смещение
[база; база+предел)
В зависимости от 55 G-бита(гранулярити), предел может измеряться в байтах при нулевом значении бита и тогда максимальный предел составит 1 мб, или в значении 1, предел измеряется страницами, каждая из которых равна 4кб. и максимальный размер такого сегмента будет 4Гб.
Для сегмента стека предел будет в интервале:
(база+предел; вершина]
Кстати интересно почему база и предел так рвано располагаются в дескрипторе. Дело в том что процессоры х86 развивались эволюционно и во времена 286х дескрипторы были по 8 бит всего, при этом старшие 2 байта были зарезервированы, ну а в последующих моделях процессоров с увеличением разрядности дескрипторы тоже выросли, но для сохранения обратной совместимости пришлось оставить структуру как есть.
Значение адреса «вершина» зависит от 54го D бита, если он равен 0, тогда вершина равна 0xFFF(64кб-1), если D бит равен 1, тогда вершина равна 0xFFFFFFFF (4Гб-1)
С 41-43 бит кодируется тип сегмента.
000 — сегмент данных, только считывание
001 — сегмент данных, считывание и запись
010 — сегмент стека, только считывание
011 — сегмент стека, считывание и запись
100 — сегмент кода, только выполнение
101- сегмент кода, считывание и выполнение
110 — подчиненный сегмент кода, только выполнение
111 — подчиненный сегмент кода, только выполнение и считывание
44 S бит если равен 1 тогда дескриптор описывает реальный сегмент оперативной памяти, иначе значение S бита равно 0.
Самым важным битом является 47-й P бит присутствия. Если бит равен 1 значит, что сегмент или локальная таблица дескрипторов загружена в оперативку, если этот бит равен 0, тогда это означает что данного сегмента в оперативке нет, он находится на жестком диске, случается прерывание, особый случай работы процессора запускается обработчик особого случая, который загружает нужный сегмент с жесткого диска в память, если P бит равен 0, тогда все поля дескриптора теряют смысл, и становятся свободными для сохранения в них служебной информации. После завершения работы обработчика, P бит устанавливается в значение 1, и производится повторное обращение к дескриптору, сегмент которого находится уже в памяти.
На этом заканчивается преобразование логического адреса в линейный, и я думаю на этом стоит прерваться. В следующий раз я расскажу вторую часть преобразования из линейного в физический.
А так же думаю стоит немного поговорить о передачи аргументов функции, и о размещении переменных в памяти, чтобы была какая-то связь с реальностью, потому размещение переменных в памяти это уже непосредственно, то с чем вам приходится сталкиваться в работе, а не просто какие-то теоретические измышления для системного программиста. Но без понимания, как устроена память невозможно понять как эти самые переменные хранятся в памяти.
В общем надеюсь было интересно и до новых встреч.
САМОЕ ГЛАВНОЕ
Для компьютерного представления целых чисел используются несколько различных способов, отличающихся друг от друга количеством разрядов (8, 16, 32 или 64) и наличием или отсутствием знакового разряда.
Для представления беззнакового целого числа его следует перевести в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
При представлении со знаком самый старший разряд отводится под знак числа, остальные разряды — под само число. Бели число положительное, то в знаковый разряд помещается 0, если число отрицательное, то 1. Положительные числа хранятся в компьютере в прямом коде, отрицательные — в дополнительном.
При хранении в компьютере вещественных чисел выделяются разряды на хранение знака порядка числа, самого порядка, знака мантиссы и мантиссы. При этом любое число записывается так:
где:
m — мантисса числа;
q — основание системы счисления;
p — порядок числа.
Что больше частота процессора или частота системной шины?
В случае процессора Intel Pentium 4 частота системной шины ровно в четыре раза больше частоты FSB. Поэтому если частота FSB составляет 100 МГц, то частота системной шины 400 МГц, если же частота FSB равна 133 МГц, то частота системной шины соответственно 533 МГц.
Ответ или решение 2
Какое количество информации может передаваться по 32 разрядной шине данных?
Разрядность шины адреса у большинства современных персональных компьютеров составляет 32 разряда, т. е. максимальный объем оперативной памяти может составлять 232 = 4 Гб.
Содержание урока
Представление целых чисел
Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры, были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном итоге сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр, — 0 и 1.
Поэтому современные компьютерные технологии называют цифровыми технологиями.
В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы их представления в памяти компьютера.
Представление целых чисел
Часть памяти, в которой хранится одно число, будем называть ячейкой. Минимальный размер ячейки, в которой может храниться целое число, — 8 битов, или 1 байт. Получим представление десятичного числа 25 в такой ячейке. Для этого нужно перевести число в двоичную систему счисления. Как это делается, вы уже знаете.
Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:
Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.
Самый старший разряд — первый слева — хранит знак числа. Если число положительное, то в этом разряде ноль, если отрицательное — единица. Самому большому положительному целому числу соответствует следующий код:
Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 2 7 = 128. Значит:
011111112 = 128 - 1 = 127.
Казалось бы, очевидным ответом является следующий: нужно в представлении числа 25 заменить старший разряд с 0 на 1. Но в компьютере все несколько сложнее.
Для представления отрицательных целых чисел используется дополнительный код.
Получить дополнительный код некоторого отрицательного числа -X можно по следующему алгоритму:
1) записать внутреннее представление соответствующего ему положительного числа +Х — это мы уже умеем;
2) записать обратный код полученного числа заменой во всех разрядах 0 на 1 и 1 на 0;
3) к полученному числу прибавить 1.
Определим по этим правилам внутреннее представление числа -2510 в восьмиразрядной ячейке:
1) 00011001
2) 11100110
3) +1
11100111 — это и есть представление числа -25.
В результате выполнении такого алгоритма единица в старшем разряде получается автоматически. Она и является признаком отрицательного значения.
Проверим полученный результат. Очевидно, что при сложении чисел +25 и -25 должен получиться ноль.
0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
+ | ||||||||
1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Единица в старшем разряде, получаемая при сложении, выходит за границу ячейки и исчезает. В ячейке остается нолъ.
Из этого примера теперь можно понять, почему представление отрицательного числа называется дополнительным кодом.
Представление восьмиразрядного отрицательного числа -X дополняет представление соответствующего положительного числа +Х до значения 2 8 .
Следующая страница Размер ячейки и диапазон значений чисел
Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом (рис. 1.2).
Рис. 1.2. Ячейка памяти
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д.
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2 n -1. Минимальное число соответствует п нулям, хранящимся в n разрядах памяти, и равно нулю.
Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Пример 1. Число 5310 = 1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом.
В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами.
Связь разрядности шины адреса и числа адресуемых ячеек памяти
Каждая ячейка памяти должна иметь уникальный адрес. Этот адрес передается по шине адреса. Максимальное число адресуемых ячеек ограничено разрядностью шины адреса. Таким образом, вычисления числа адресуемых ячеек памяти сводится к вычислению количества возможных числовых комбинаций на шине адреса.
Поскольку по шине адреса передаются двоичные числа, то каждый из ее разрядов в каждый момент времени может принимать либо значение логического нуля, либо значение логической единицы.
. Вычисли количество адресуемых ячеек памяти, если разрядность шины адреса равна 32: N=
Что такое шина в программировании?
Шина – совокупность линий, иногда просто проводников, соединяющая несколько компонентов в цифровой системе. Эти линии делятся на 3 типа – адреса, данных и управления. Иногда по одним и тем же проводникам в разные моменты времени передаются и адрес и данные – в этом случае говорят, что шина мультиплексирована.
Как определяется объем адресуемой памяти Если известна разрядность N адресной шины?
Каждая ячейка должна иметь свой адрес. Следовательно, объем памяти, который может адресовать процессор, зависит от разрядности адресной шины. Его можно вычислить по формуле: Объем адресуемой памяти = 2n, где n — число линий в адресной шине.
Содержание урока
Представление целых чисел
Любая информация в памяти компьютера представляется в двоичном виде: последовательностью нулей и единиц. Исторически первым типом данных, с которыми стали работать компьютеры, были числа. Теперь это и числа, и тексты, и изображение, и звук. Работа с данными любого типа в конечном итоге сводится к обработке двоичных чисел — чисел, записываемых с помощью двух цифр, — 0 и 1.
Поэтому современные компьютерные технологии называют цифровыми технологиями.
В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы их представления в памяти компьютера.
Представление целых чисел
Часть памяти, в которой хранится одно число, будем называть ячейкой. Минимальный размер ячейки, в которой может храниться целое число, — 8 битов, или 1 байт. Получим представление десятичного числа 25 в такой ячейке. Для этого нужно перевести число в двоичную систему счисления. Как это делается, вы уже знаете.
Теперь осталось «вписать» его в восьмиразрядную ячейку (записать так называемое внутреннее представление числа). Делается это так:
Число записывается «прижатым» к правому краю ячейки (в младших разрядах). Оставшиеся слева разряды (старшие) заполняются нулями.
Самый старший разряд — первый слева — хранит знак числа. Если число положительное, то в этом разряде ноль, если отрицательное — единица. Самому большому положительному целому числу соответствует следующий код:
Чему он равен в десятичной системе? Можно расписать это число в развернутой форме и вычислить выражение. Но можно решить задачу быстрее. Если к младшему разряду этого числа прибавить единицу, то получится число 10000000. В десятичной системе оно равно 2 7 = 128. Значит:
011111112 = 128 - 1 = 127.
Казалось бы, очевидным ответом является следующий: нужно в представлении числа 25 заменить старший разряд с 0 на 1. Но в компьютере все несколько сложнее.
Для представления отрицательных целых чисел используется дополнительный код.
Получить дополнительный код некоторого отрицательного числа -X можно по следующему алгоритму:
1) записать внутреннее представление соответствующего ему положительного числа +Х — это мы уже умеем;
2) записать обратный код полученного числа заменой во всех разрядах 0 на 1 и 1 на 0;
3) к полученному числу прибавить 1.
Определим по этим правилам внутреннее представление числа -2510 в восьмиразрядной ячейке:
1) 00011001
2) 11100110
3) +1
11100111 — это и есть представление числа -25.
В результате выполнении такого алгоритма единица в старшем разряде получается автоматически. Она и является признаком отрицательного значения.
Проверим полученный результат. Очевидно, что при сложении чисел +25 и -25 должен получиться ноль.
0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | |
+ | ||||||||
1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Единица в старшем разряде, получаемая при сложении, выходит за границу ячейки и исчезает. В ячейке остается нолъ.
Из этого примера теперь можно понять, почему представление отрицательного числа называется дополнительным кодом.
Представление восьмиразрядного отрицательного числа -X дополняет представление соответствующего положительного числа +Х до значения 2 8 .
Следующая страница Размер ячейки и диапазон значений чисел
Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом (рис. 1.2).
Рис. 1.2. Ячейка памяти
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д.
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2 n -1. Минимальное число соответствует п нулям, хранящимся в n разрядах памяти, и равно нулю.
Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Пример 1. Число 5310 = 1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом.
В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами.
Сколько ячеек памяти можно адресовать по 20 разрядной шине адреса?
Например, если ширина адресной шины составляет 20 бит, и размер слова памяти равен одному байту (минимальный адресуемый объём данных), то объём памяти, который можно адресовать, составляет 220 = 1 048 576 байт (1 Мбайт) как в IBM PC/XT.
Какой объем памяти можно адресовать 16 разрядной шиной адреса?
В беззнаковом представлении это значения целых чисел от 0 до 65 535; с использованием «дополнения до двух» диапазон возможных значений: от −32 768 до 32 767. Таким образом, процессоры с 16-разрядной адресацией памяти могут получить прямой доступ 64 КБ адресуемой памяти.
Читайте также: