PDA

Показать полную графическую версию : Вопрос по основам Организации ЭВМ


jnshish
10-01-2012, 16:21
Возник вопрос по задаче из книги "Организация ЭВМ" Таненбаума:

Рассмотрим многоуровневый компьютер, в котором все уровни отличаются друг от друга. Команды каждого уровня в m раз мощнее команд предыдущего уровня, то есть одна команда уровня r может выполнять ту же работу, которую выполняют m команд на уровне r - 1. Если для выполнения программы первого уровня требуется k секунд, сколько времени будут выполняться соответствующие программы на уровнях 2, 3 и 4, с учетом того, что для интерпретации одной команды уровня r + 1 требуется n команд уровня r?

Я решил так: на 1ом уровне кол-во выполняемых команд в n раз больше, чем на 2ом => для их решения требуется (k/n) секунд на 2ом уровне, k/(n^2) на 3-ем и т.д.
Но тогда причём здесь мощность команд m? Подскажите.

Grabber2006
10-01-2012, 16:54
Долго думал. Вот вопрос:

Что значит "соответствующие" программы? Если они достигают одного результата, то на всех уровнях будет k секунд, т.к. мы говорим об одном и том же компьютере.
А если программы разные - то их надо как-то описать.


[программа "соответствующая", т.е. та же (4)]
[и на 3ем тоже неважно, т.к. она выполняется k сек (3)]
[и не важно сколько здесь команд и каких на 2 уровне (2)]
[программа выполняется за k секунд на 1 уровне (1)]

jnshish
10-01-2012, 19:35
Я понимаю, что соответствующая программа уровня r для уровня r-1 - эта та, из которой после работы интерпретатора получается программа уровня r-1 (Как аналог: имеем программу на Javа, после компиляции/интерпретации её байт-код, запуская её на выполнение - код на целевой платформе. По сути одна и та же программа, но на каждом уровне(вирт.машине) её описание различно.)

Я подумал,что может автор подразумевал следующее:
что если машинным языком(т.е. тот который выполняется электронными схемами) будет не язык уровня 1, а язык уровня 2, 3, 4. Гипотетически это возможно (если следовать материалу его книги), тогда команд будет выполняться в n раз меньше и тогда Tr=k/n^(r-1)

Grabber2006
10-01-2012, 19:54
Если считать, что на каждом уровне в единицу времени выполняется одинаковое число команд в штуках, то тогда задача приобретает некоторый смысл.

Тогда можно посчитать время выполнения такого же количества команд (в штуках) на другом уровне:

Tr = k * (n^(r-1)) / (m^(r-1))

Но, ИМХО, это не имеет никакого смысла, т.к., например, количество строк в листинге программы на C сравнивается с числом строк в листинге Asm.

jnshish
10-01-2012, 20:10
В общем, наша проблема в идентичном автору понимании сути вопроса. Поищу книгу на английском, может дело в некорректном переводе.

Grabber2006
10-01-2012, 20:27
что если машинным языком(т.е. тот который выполняется электронными схемами) »
Ваша версия верна. В книге именно это и подразумевается.

Если считать, что на каждом уровне в единицу времени выполняется одинаковое число команд в штуках »
Это - то же самое.

jnshish
10-01-2012, 21:39
Спасибо. Только похоже у тебя опечатка: n и m поменяй местами (числитель и знаменатель)

Нет, это я вру. Формула верна.




© OSzone.net 2001-2012