Принцип черного ящика

Содержание

Слайд 2

Принцип черного ящика Чтобы пользоваться черным ящиком, не обязательно знать его внутреннее устройство

Принцип черного ящика

Чтобы пользоваться черным ящиком, не обязательно знать его внутреннее

устройство
Слайд 3

Инкапсуляция Чтобы пользоваться классом или библиотекой через интерфейс, необязательно понимать, как они реализованы

Инкапсуляция

Чтобы пользоваться классом или библиотекой через интерфейс, необязательно понимать, как они

реализованы
Слайд 4

Магия Как работает заклинание или ритуал? Просто работает! Причины не важны!

Магия

Как работает заклинание или ритуал? Просто работает! Причины не важны!

Слайд 5

А что у черного ящика внутри? Много черных ящиков!

А что у черного ящика внутри?

Много черных ящиков!

Слайд 6

«Закон дырявых абстракций» Все нетривиальные абстракции дырявы (Дж. Спольски) Следствие 1:

«Закон дырявых абстракций»

Все нетривиальные абстракции дырявы
(Дж. Спольски)

Следствие 1: единственный компетентный

способ залатать эти дыры - выучить, как работают абстракции, и какие подробности они скрывают.
Следствие 2: абстракции экономят наше рабочее время, но не экономят учебное время.
Слайд 7

Абстракции имеют ограниченную область применимости Сложение скоростей в классической механике: Сложение скоростей в релятивистской механике:

Абстракции имеют ограниченную область применимости

Сложение скоростей
в классической механике:

Сложение скоростей
в

релятивистской механике:
Слайд 8

Как устроена память? D-триггер Позволяет хранить 1 бит информации: D –

Как устроена память?

D-триггер

Позволяет хранить 1 бит информации:
D – вход данных;
Е –

включение: триггер запоминает состояние входа D при логической единице на входе Е
Q – прямой выход (совпадает с хранимым состоянием)
Q̅ – инверсный выход (инверсия хранимого состояния)
Слайд 9

Как устроен D-триггер? Элемент НЕ-И (NAND GATE): на выходе 0 только когда на обеих входах 1

Как устроен D-триггер?

Элемент НЕ-И (NAND GATE):
на выходе 0 только когда на

обеих входах 1
Слайд 10

А как устроен элемент НЕ-И?

А как устроен элемент НЕ-И?

Слайд 11

А как устроен транзистор?

А как устроен транзистор?

Слайд 12

Как хранить несколько бит?

Как хранить несколько бит?

Слайд 13

Как хранить много-много бит? Последовательно: - N бит – 3 провода

Как хранить много-много бит?

Последовательно: - N бит – 3 провода (но

N тактов)

Обычно все же байтами или группами байт. Такой подход используется
в стримерах, винчестерах, дискетах, CD/DVD/BD и так далее

Слайд 14

Как хранить много-много бит? В виде матрицы: N бит – 3 + √N проводов

Как хранить много-много бит?

В виде матрицы: N бит – 3 +

√N проводов
Слайд 15

Запись

Запись

Слайд 16

Чтение

Чтение

Слайд 17

Как хранить много-много бит? Использовать АДРЕСА: - N бит – ~log2N

Как хранить много-много бит?

Использовать АДРЕСА: - N бит – ~log2N проводов

В

реальности минимальная адресуемая единица (МАЕ) – не бит, а байт или более.
Слайд 18

Как хранить много байт? 8*N бит данных (N байт) – log2N

Как хранить много байт?

8*N бит данных (N байт) – log2N проводов

для шины адреса + N для шины данных
Слайд 19

Память с адресной структурой Начальный адрес – необязательно 0 «Памятей» может

Память с адресной структурой

Начальный адрес – необязательно 0
«Памятей» может быть несколько,

причем адреса могут численно совпадать
Может хранить разные по смыслу данные
Слайд 20

А как хранятся многобайтные объекты? Объекты в смысле «штуковины», а не

А как хранятся многобайтные объекты?

Объекты в смысле «штуковины», а не экземпляр

класса С++

Как хранится массив char a[5]?

Подряд!

А ближе к началу адресов
элемент a[0] или элемент a[4]?

a[0]

Допустим, int занимает 4 байта.
Как они хранятся?

Подряд!

А в каком порядке?

Возможны варианты

Слайд 21

Endianness (порядок байт) Little-endian В меньшем адресе младший байт Big-endian В

Endianness (порядок байт)

Little-endian
В меньшем адресе младший байт

Big-endian
В меньшем адресе старший байт

Int

x = 0x11223344;

Еще бывает смешанный, но давайте лучше не будем про него вспоминать

Слайд 22

А как хранится код? Код на языке высокого уровня компилируется в

А как хранится код?

Код на языке высокого уровня компилируется в ассемблерные

инструкции – машинные команды
Эти команды и выполняет процессор
Каждая инструкция – это число
Числа хранятся в памяти!
Код – это данные!
Слайд 23

Архитектуры ЭВМ ARM официально считает ARMv7 “модифицированной гарвардской архитектурой»

Архитектуры ЭВМ

ARM официально считает ARMv7 “модифицированной гарвардской архитектурой»

Слайд 24

Какие бывают инструкции ассемблера? Арифметика (сложить два числа, вычесть, умножить, разделить

Какие бывают инструкции ассемблера?

Арифметика (сложить два числа, вычесть, умножить, разделить и

т.д.).
Битовые операции (сдвиг, ИЛИ, И, НЕ и т.д.).
Перемещения между ячейками памяти (из переменной в переменную и т.д.).
Условные и безусловные переходы (if-else и goto).
Прочие
Слайд 25

Что такое процессорные регистры? «Сверхоперативная память» В них сохраняются результаты промежуточных

Что такое процессорные регистры?

«Сверхоперативная память»
В них сохраняются результаты промежуточных вычислений
В RISC

процессор не имеет прямого доступа к оперативной памяти
Есть спец-команды «загрузить значение из памяти в регистр» и
«выгрузить значение из регистра в память»