Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_bilety_1kurs_2semestr.docx
Скачиваний:
2
Добавлен:
23.09.2019
Размер:
339.12 Кб
Скачать

25. Архитектура Фон-неймана. Основные элементы эвм. Косвенная адресация операндов. Понятие операнда.

Архитектура – это наиболее общие принципы построения ЭВМ, реализующие программное управление работой и взаимодействием основных ее функциональных узлов.

 Архитектура Фон Неймана - система принципов построения и функционирования компьютера, предложенная американским математиком Джоном Фон Нейманом в 1945 году в статье «Предварительное рассмотрение логической конструкции электронно-вычислительного устройства». Фон Неймановская архитектура компьютера считается классической, на ней построено большинство компьютеров. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных.

Основные элементы ЭВМ:

В соответствии с принципами фон Неймана компьютер состоит из:

Арифметического логического устройства — АЛУ (англ. ALU, Arithmetic and Logic Unit), выполняющего арифметические и логические операции;

Устройства управления, предназначенного для организации выполнения программ;

Запоминающих устройств (ЗУ), в т.ч. оперативного запоминающего устройства (ОЗУ) и внешнего запоминающего устройства (ВЗУ);

Внешних устройств для ввода-вывода данных.

Косвенная адресация операндов:

Косвенная. Основная суть любого вида косвенной адресации – это получение операнда не напрямик, а через адрес, который хранится в некоторой ячейке памяти (переменной). То есть получение значение по ссылке (указателю) – это и есть косвенная адресация.

В команде содержится адрес адреса операнда.

int a

int *pa = &a;

Адресация на уровне процессора организована максимум с двойным уровнем косвенности, это когда в ячейке памяти хранится адрес адреса операнда. Но в языках программирования возможна реализация неограниченного количества уровней косвенности.

Например:

int a

int *pa = &a;

int **ppa = &pa;

Операнд — это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.

26. Архитектура Фон Неймана. Узкое горло арх. Фон Неймана. Способы решения.

Архитектура – это наиболее общие принципы построения ЭВМ, реализующие программное управление работой и взаимодействием основных ее функциональных узлов.

 Архитектура Фон Неймана - система принципов построения и функционирования компьютера, предложенная американским математиком Джоном Фон Нейманом в 1945 году в статье «Предварительное рассмотрение логической конструкции электронно-вычислительного устройства». Фон Неймановская архитектура компьютера считается классической, на ней построено большинство компьютеров. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных.

Узкое (или бутылочное) горло архитектуры Фон Неймана:

В простейшем изложении фон-неймановский компьютер состоит из трех частей: это центральный процессор (CPU или ЦПУ), память и соединяющий их канал, который служит для обмена данными между CPU и памятью, причем маленькими порциями (лишь по одному слову). Я предлагаю назвать этот канал «бутылочным горлом фон Неймана». Наверняка должно быть менее примитивное решение, чем перекачивание огромного количества данных через «узкое бутылочное горло». Такой канал не только создает проблему для трафика, но еще и является «интеллектуальным бутылочным горлом», которое навязывает программистам «пословное» мышление, не позволяя рассуждать в более высоких концептуальных категориях».

Способы Решения

Фон-неймановская архитектура компьютера не является единственно возможной. С точки зрения организации обмена командами между процессором и памятью все компьютеры можно разделить на четыре класса:

  • SISD (Single Instruction Single Data) — «один поток команд, один поток данных»»;

  • SIMD (Single Instruction Multiply Data) — один поток команд, много потоков данных;

  • MISD (Multiple Instruction Single Data) — много потоков команд, один поток данных;

  • MIMD (Multiple Instruction Multiple Data) — много потоков команд, много потоков данных.

Из этой классификации видно, что фон-неймановская машина является частным случаем, попадающим в категорию SISD. Возможные усовершенствования в рамках архитектуры SISD ограничиваются включением в нее конвейеров и других дополнительных функциональных узлов, а также использованием разных методов кэширования.

Если оставаться в рамках этой классификации, то единственной возможностью преодоления ограничений «бутылочного горла» остается развитие архитектур класса MIMD. В их рамках обнаруживается множество подходов: это могут быть и различные параллельные и кластерные архитектуры, и многопотоковые процессоры.

27. Функции в СИ++. Способы описания функций. Примеры. Рекурсия. Функции разбивают большие вычислительные задачи на маленькие подзадачи и позволяют выделить участки кода для повторного использования.(+посмотрите картинку в презентации «функции» на 12 слайде) тип имя_функции (список аргументов) {тело функции return значение} void имя_ процедуры (список аргументов) {тело функции } Примеры:

1 2

int inverse(int a) int factorial(int x)

{ {

int ma; int fx = 1;

ma = -1 * a; int i;

return ma; for(i=1;i<=x;i=i+1)

} {

int main() fx=fx*i;

{ }

int d=5; return fx;

int b; }

b = inverse(d); void main()

printf(“%i”,b); {

} int x;

scanf ("%d",&x);

int fx=factorial(x);

printf("%d",fx);

Функция называется рекурсивной, если во время ее обработки возникает ее повторный вызов.

28. Рекурсия. Примеры – факториал числа с помощью цикла и рекурсии. Функция называется рекурсивной, если во время ее обработки возникает ее повторный вызов.

int fact(int n)

{

int fn = 1;

int i;

for (i=1; i<=n; i=i+1)

{

fn = fn * i;

}

return fn;

}

int _tmain(int argc, _TCHAR* argv[])

{

int x;

scanf("%i", &x);

printf ("%i", fact(x));

scanf(" ");

return 0;

}

int fact(int n, int fn)

{

fn=fn*n;

n--;

if (n>0)

return fact(n, fn);

return fn;

}

int _tmain(int argc, _TCHAR* argv[])

{

int x, fn=1;

scanf("%i", &x);

printf ("%i", fact(x,fn));

scanf(" ");

return 0;

}

29. СИ. Переменные. Понятие массива. Объявление массива. Инициализация массива значениями. Копирование одного массива в другой такого же размера. Переменная - именованная область памяти, в которой хранятся данные определенного типа. Массив: – именованный набор однотипных переменных, доступ к которым осуществляется по индексу; - структурированный тип данных, состоящий из фиксированного числа элементов одного типа; Объявление массива : описание- int x[10]; Инициализация – присвоение значения int x[3]={1,2,3} Массив можно копировать только поэлементно: a[i]=b[i];

30. Управляющие операторы. Оператор цикла с постусловием. Обозначение на БСА. Реализация на СИ. Как можно преобразовать алгоритм с циклом с постусловием do .. while в конструкциею с IF. Пример программы определения разрядности числа. Оператор безусловного перехода goto. Управляющие операторы: if – else - используется когда нужно сделать выбор. В зависимости от условий реализуется одно из направлений. while / do – while – выполняется несколько раз, пока не выполнится условие. for – идет повторения набора действий определенное количество раз. Оператор цикла с постусловием: do ... while . ТЦ выполнится х/б один раз { do { } while (условие) ... } Как можно преобразовать алгоритм с циклом с постусловием do .. while в конструкциею с IF. Пример программы определения разрядности числа.:

{

int x, raz=0;

scanf("%i", &x);

do

{

x=x/10;

raz++;

}

while (x>0);

printf ("%i", raz);

scanf(" ");

return 0;

}

{

int x, raz=0;

scanf("%i", &x);

l1:if (x>0)

{

x=x/10;

raz++;

goto l1;

}

printf ("%i", raz);

scanf(" ");

return 0;

}

goto – переход к определенной точке программы, обозначенной какой-либо меткой (пример см. выше)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]