Таненбаум Э.- Архитектура компьютера. стр.332

29. На некоем компьютере можно перемещать число из одного регистра в другой, сдвигать каждый из них влево на разное количество байтов и складывать полученные результаты быстрее, чем при умножении. При каком условии эта последовательность команд будет полезна для вычисления произведения «константа х переменная»?

30. Разные машины имеют разную плотность команд (то есть разное число байтов, которое требуется для выполнения определенного вычисления). Транслируйте следующие три фрагмента Java-программы на ассемблер Pentium 4, UltraSPARC III и IJVM. Затем подсчитайте, сколько байтов требуется для выполнения каждого выражения для каждой машины. Предполагается, что i и j — это локальные переменные в памяти. В остальном отталкивайтесь от наиболее оптимистичных допущений.

i =3: i = J: i = j - 1;

31. В этой главе рассматривались команды для циклов for. Разработайте команду для циклов while.

32. Предположим, что ханойские монахи могут перемещать один диск за 1 минуту (они не торопятся закончить работу, поскольку в Ханое очень мало вакан сий для людей с подобными навыками). Сколько времени им потребуется, чтобы решить задачу (то есть переместить все 64 диска)? Ответ дайте в годах.

33. Почему устройства ввода-вывода помещают вектор прерывания на шину? Разве нельзя вместо этого сохранить соответствующую информацию в таблице в памяти?

34. Компьютер для считывания информации с диска использует канал прямого доступа к памяти. Диск содержит 64 сектора по 512 байт на дорожке. Время оборота диска составляет 16 мс. Ширина шины — 16 бит. Каждая передача шины занимает 500 не. В среднем для одной команды процессора требуется два цикла шины. Насколько скорость работы процессора замедляется из-за прямого доступа к памяти?

35. Почему программам обработки прерываний приписываются определенные приоритеты, а обычные процедуры приоритетов не имеют?

36. Архитектура ІА-64 предусматривает необычайно большое число регистров (64). Связано ли это с предикацией? Если да, то каким образом? Если нет, то зачем тогда их так много?

37. В этой главе обсуждалось понятие спекулятивной загрузки. Но о командах спекулятивного сохранения мы не упоминали. Почему? Может быть, они просто аналогичны командам спекулятивной загрузки? Или существует какая-то другая причина, по которой мы не стали о них говорить?

38. Когда нужно связать две локальные сети, между ними помещается мост, соединенный с обеими сетями. Каждый передаваемый какой-либо сетью пакет вызывает прерывание на мосту, чтобы мост мог определить, нужно ли этот пакет пересылать. Предположим, что на обработку прерывания и проверку пакета требуется 250 мке, но пересылка этого пакета в случае необходимости совершается путем прямого доступа к памяти, поэтому центральный процессор от этой работы освобожден. Если размер всех пакетов равен 1 Кбайт, какова максимальная скорость передачи данных на каждой из сетей?

39. На рис. 5.25 указатель фрейма указывает на первую локальную переменную. Какая информация нужна программе, чтобы выйти из процедуры и вернуться в исходное состояние?


⇐ Предыдущая страница| |Следующая страница ⇒