Олимпиадный тренинг

Задача . ИТМО-2526. 5–8 класс. Хитрый декодер


Задача

Темы: Олимпиады ИТМО

Процессор читает инструкции переменной длины и работает в две стадии:

1) Выборка. За 1 такт процессор может считать из памяти ровно 8 байт (даже если какая-то инструкция при этом считается не полностью) и положить их в буфер выборки. Размер буфера выборки — 16 байт.

Буфер выборки работает как циклическая очередь. Если в буфере нет места для новых данных, они записываются поверх старых, уже декодированных данных, начиная с начала буфера, что позволяет не терять последние считанные байты. Точно так же — циклически — происходит последующее чтение данных из буфера. Если в буфере нет места для ещё 8 байт (в буфере уже находится более 8 ещё не декодированных байт), выборка в этот такт не выполняется. Байты поступают в конец буфера и читаются с начала, как в очереди.

2) Декодирование. Инструкции декодируются строго по порядку. Время декодирования зависит от длины инструкции:

  • 2 байта = 1 такт
  • 4 байта = 2 такта
  • 8 байтов = 3 такта

Выборка и декодирование могут идти параллельно (в один и тот же такт). В один такт можно положить инструкцию в буфер и сразу начать её декодирование. В начале работы буфер пуст, процессор начинает с выборки.

Программа состоит из 1000 инструкций: 40% — длиной 2 байта, 30% — длиной 4 байта, 30% — длиной 8 байт.

Задание: найдите общее количество тактов до момента, когда последняя инструкция будет полностью декодирована.


time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя