Рассмотрим многоуровневый компьютер, в котором все уровни различны. В каждом уровне есть команды, которые в m раз мощнее, чем команды нижележащего уровня; то есть одна команда уровня r может выполнять работу m уровня r - 1 команды. Если для выполнения программы уровня 1 требуется k секунд, сколько времени займут эквивалентные программы на уровнях 2, 3 и 4, предполагая, что для интерпретации одной команды r+1 требуется n команд уровня r?
Вот решение, которое я придумал. Кто-нибудь может подтвердить или прокомментировать?
Это решение, которое я придумал. Кто-нибудь может подтвердить или прокомментировать?
Level (r) Level-1 Instructions (m) Time
4 m^3 t(q) ==(m^3q+n+nm+nm^2) (k/q)
3 m^2 t(q) =(m^2q+n+nm)(k/q)
2 m t(q) = (mq+n)(k/q)
1 1 t(q) = k
Для того, чтобы вычислить время выполнения t(q) для данной программы, содержащей команды q уровня 1, необходимо учитывать как экспоненциально возрастающее количество инструкций уровня 1, которое представляет каждая инструкция уровня r (показано в виде m^(r-1)), так и дополнительное количество инструкций уровня 1, необходимое для интерпретации для каждого слоя, на котором выполняется программа (показано в виде nm^(r-1)). Дополнительные команды уровня-1, используемые для интерпретации нижними уровнями, также должны быть добавлены в конечные уравнения для r>2. Наконец, для каждого уравнения можно определить количество секунд, которое занимает программа, умножив общее количество инструкций уровня-1, используемых на время выполнения одного цикла уровня-1, рассчитанное на (k/q).
Отказ от ответственности: Это - домашнее задание, задание уже сдано. Я просто не могу понять семантику этой проблемы, и мне бы очень хотелось ее понять.