- •Архитектура эвм. Варианты микроархитектуры процессоров Intel
- •Архитектура фон-Неймана (с рисунком).
- •Микроархитектура p6. Конвеерная архитектура.
- •Микроархитектура p6. Суперскалярная конвеерная архитектура.
- •Микроархитектура p6. Структура процессора.
- •Микроархитектура NetBurst (без рисунка).
- •Архитектура ia32. Основные ресурсы.
- •Архитектура ia32. Режимы работы процессора.
- •Архитектура ia32. Пользовательские рагистры.
- •Архитектура ia32. Системные регистры. Структура регистров.
- •Архитектура ia32. Регистры общего назначения.
- •Архитектура ia32. Сегментные регистры.
- •Архитектура ia32. Флаги состояния.
- •Архитектура ia32. Флаг управления. Системные флаги.
- •Архитектура ia32. Организация памяти.
- •Архитектура ia32. Сегментированная модель памяти (без рисунка).
- •Архитектура ia32. Аппарат виртуальной памяти (рисунки необязательны).
- •Архитектура ia32. Организация страничной памяти.
- •8) Вычислить logab с точностью до целых. Результат записать в стек.
-
Архитектура ia32. Аппарат виртуальной памяти (рисунки необязательны).
Элементарное программно-аппаратное решение - использование возможности базирования адресов. Суть его состоит в следующем: пусть имеется исполняемый программный модуль. Виртуальное адресное пространство этого модуля лежит в диапазоне [0, Акон]. В ЭВМ выделяется специальный регистр базирования Ябаз., который содержит физический адрес начала области памяти, в которой будет размещен код данного исполняемого модуля. При этом исполняемые адреса, используемые в модуле будут автоматически преобразовываться в адреса физического размещения данных путем их сложения с регистром Кбаз.
Рассмотрим более сложные механизмы организации виртуальной памяти. Пусть имеется вычислительная система, функционирующая в мультипрограммном режиме. Один из них занимает ресурсы ЦП. Другие ждут завершения операций обмена, третьи - готовы к исполнению и ожидают предоставления ресурсов ЦП. При этом происходит завершение выполнявшихся процессов и ввод новых, это приводит к возникновению проблемы фрагментации ОЗУ. При размещении новых программ/процессов в ОЗУ ЭВМ (для их мультипрограммной обработки) образуются свободные фрагменты ОЗУ между программами/процессами. Суммарный объем свободных фрагментов может быть достаточно большим, но, в то же время, размер самого большого свободного фрагмента недостаточно для размещения в нем новой программы/процесса. В этой ситуации возможна деградация системы. Путь решения этой проблемы - использование более развитых механизмов организации ОЗУ и виртуальной памяти,
-
Архитектура ia32. Организация страничной памяти.
Страничная организация памяти предполагает разделение всего пространства ОЗУ на блоки одинакового размера - страницы. Обычно размер страницы равен 2k В этом случае адрес, используемый в данной ЭВМ, будет иметь следующую структуру:
Модельная (упрощенная) схема организации функционирования страничной памяти ЭВМ следующая: Пусть одна система команд ЭВМ позволяет адресовать и использовать m страниц размером 2k каждая. То есть виртуальное адресное пространство программы/процесса может использовать для адресации команд и данных до m страниц. В виртуальном адресе размер поля определяется максимальным числом виртуальных страниц - m.
В физическом адресе - максимально возможным количеством физических страниц, которые могут быть подключены к данной ЭВМ (это также фиксированная аппаратная характеристика ЭВМ).
1) Получить среднее арифметическое трёх чисел. Результат записать в стек.
.model tiny
.code
org 100h
start:
; <al:ah> = <ax>;
mov al,A
add al,B
add al,C
mov bl,3
div bl
xor ah,ah
push ax
;pop ax
ret
.data
A db 35
B db 16
C db 80
end start
2) Получить ab. Результат записать в стек.
.model tiny
.code
org 100h
start:
mov ax,1
mov cl,b
cmp cl,0
jg then_more ; если b>0
jz then_zero ; если b=0
then_more:
mul a
loop then_more
then_zero:
push ax
;pop ax
ret
.data
a dw 7
b db 4
end start
3) Получить сумму N первых членов арифметической прогрессии с первым членом равным a. Результат записать в стек.
model tiny
.code
org 100h
start:
mov cl,N
xor bl,bl
mov al,a
summa_loop:
add bl,al
add al,d
loop summa_loop
push bx
;pop ax
ret
.data
a db 7
d db 2
N db 5
end start
4) Получить сумму N первых членов геометрической прогрессии с первым членом равным b. Результат записать в стек.
.model tiny
.code
org 100h
start:
mov cl,N
xor bl,bl
mov al,b
summa_loop:
add bl,al
mul q
loop summa_loop
push bx
;pop bx
ret
.data
b db 3
q db 2
N db 5
end start
5) Сравнить два числа и большее записать в стек.
.model tiny
.code
org 100h
start:
mov ax,a
cmp ax,b
jl menshe
jmp bolsheravno
menshe:
mov ax,b
bolsheravno:
push ax
;pop ax
ret
a dw 2
b dw 3
end start
6) Вычислить b2–4ac. Результат записать в стек.
.model tiny
.code
org 100h
start:
mov ax,b
mul b
mov bx,ax
mov ax,4
mul a
mul c
sub bx,ax
push bx
;pop bx
ret
.data
a dw 2
b dw 10
c dw 5
end start
7) Вычислить a∙2b, не используя операцию умножения (0<b<8). Результат записать в стек.
.model tiny
.code
org 100h
start:
mov cl,b
mov ax,2
cmp b,1
je next
dec cl
vstepenb_loop:
add ax,ax
loop vstepenb_loop
next:
mov cl,a
cmp a,0
jg apositive
jl anegative
;xor bx,bx
jmp result
apositive:
add bx,ax
dec cl
cmp cl,0
jnz apositive
jmp result
anegative:
sub bx,ax
inc cl
cmp cl,0
jnz anegative
jmp result
result:
push bx
;pop bx
ret
.data
a db 0
b db 3
end start