Другие языки программирования и технологии
помогите пожалуйста решить задачу по работе компьютера!
подскажите пожалуйста решение задачи (желательно подробное), т.к. не могу найти формулы которые помогли бы её решить....заранее спасибо!! задача: !16разрядный компьютер имеет 24разрядную шину адреса и 16разрядную данных. в него установлено максимальное количество оперативной памяти. в начале работы, чтобы проверить исправность всей памяти, происходит тестирование: сначала в каждую ячейку памяти записывается число, состоящее из одних единиц, затем оно считывается и проверяется, что считанное число равно записанному. затем такие действия происходят с числом составленным из одних нулей. сколько времени займёт проверка всей памяти, если запись числа в память и чтение числа из памяти требуют по 2 такта работы, сравнение двух чисел требует одного такта, дополнительные команды, связанные с организацией цикла требуют 14 тактов. тактовая частота составляет 20 МГц
Это характеристики компьютера на процессоре IBM PC AT 286. Никаких астрономических чисел там нет.
24-разрядная шина адреса означает, что всего возможно обращение к 2^24 = 16777216 ячейкам памяти, в каждой ячейке хранится 1 байт, поэтому максимальный объем ОЗУ составляет 16 Мб. Такой объем у нас и установлен.
Теперь разберемся с тестом. Тест состоит из трех частей: запись данных в ячейку (2 такта) , чтение данных (2 такта) , сравнение (1 такт) . Всего 5 тактов, и дополнительные команды требуют еще 14 тактов. Всего 19 тактов. И так 2 раза, потому что сначала пишут единицы, а потом нули. Получается, что требуется 38 тактов на проверку 1 ячейки.
Тактовая частота составляет 20 МГц, значит за 1 с происходит 20 миллионов тактов.
В итоге: мы должны проверить 16777216 ячеек, на каждую тратится 38 тактов, значит для проверки всей памяти нужно 16777216*38 тактов, причем на каждые 20*10^6 тактов требуется 1 с времени.
Очевидно, что это займет Т = 16777216*38/(20*10^6) = 31876710,4 * 10^(-6) ~ 32 c
24-разрядная шина адреса означает, что всего возможно обращение к 2^24 = 16777216 ячейкам памяти, в каждой ячейке хранится 1 байт, поэтому максимальный объем ОЗУ составляет 16 Мб. Такой объем у нас и установлен.
Теперь разберемся с тестом. Тест состоит из трех частей: запись данных в ячейку (2 такта) , чтение данных (2 такта) , сравнение (1 такт) . Всего 5 тактов, и дополнительные команды требуют еще 14 тактов. Всего 19 тактов. И так 2 раза, потому что сначала пишут единицы, а потом нули. Получается, что требуется 38 тактов на проверку 1 ячейки.
Тактовая частота составляет 20 МГц, значит за 1 с происходит 20 миллионов тактов.
В итоге: мы должны проверить 16777216 ячеек, на каждую тратится 38 тактов, значит для проверки всей памяти нужно 16777216*38 тактов, причем на каждые 20*10^6 тактов требуется 1 с времени.
Очевидно, что это займет Т = 16777216*38/(20*10^6) = 31876710,4 * 10^(-6) ~ 32 c
не компьютер же, процессор!
Ардак Макамбетов
компьютер. в условии написано так. ну подразумевается само собой процессор
(2+2+1)*2+14=24 такта на полную проверку одной ячейки
24-х разрядная шина адреса позволяет адресовать 2 в 24-й степени адреса или 16777216 байт (16 Мбайт) памяти.
Один адрес адресует один байт информации.
Так как шина данных 16-ти разрядная, то за один раз может считываться сразу два байта расположенные по соседним адресам, соответственно 24-х разрядную шину делим на 2 и получаем: 8388608 двухбайтных слов.
24 такта х 8388608 = 201326592 тактов потребуется для проверки всей памяти.
Тактовая частота 20 МГц или 20 000 000 Гц, это за 1 секунду.
Теперь делим: 201326592 тактов / 20 000 000 Гц = 10,0663296 секунд.
То есть потребуется почти 10 секунд на проверку всей памяти, при этом предполагается, что при проверке запись происходит сразу в две ячейки памяти, то есть в два соседних байта, так как шина адреса 16-ти разрядная.
Если запись и чтение будут идти однобайтным способом и будет использоваться не все 16 разрядов шины данных, а только 8, то потребует времени в 2 раза больше. Просто у преподователя не корректно написано: "сначала в каждую ячейку памяти записывается число.... ". Ячейка памяти это 1 байт, а шина 16-ти разрядная, поэтому можно сразу записывать или 1 или 2 байт. Но программа тестирования записывала бы скорее всего сразу по два байта в целях экономии времени.
А формулы для решения этой задачи вы нигде не найдёте, так как для решения берутся разные формулы, многие вычисления проводятся интуитивно.
24-х разрядная шина адреса позволяет адресовать 2 в 24-й степени адреса или 16777216 байт (16 Мбайт) памяти.
Один адрес адресует один байт информации.
Так как шина данных 16-ти разрядная, то за один раз может считываться сразу два байта расположенные по соседним адресам, соответственно 24-х разрядную шину делим на 2 и получаем: 8388608 двухбайтных слов.
24 такта х 8388608 = 201326592 тактов потребуется для проверки всей памяти.
Тактовая частота 20 МГц или 20 000 000 Гц, это за 1 секунду.
Теперь делим: 201326592 тактов / 20 000 000 Гц = 10,0663296 секунд.
То есть потребуется почти 10 секунд на проверку всей памяти, при этом предполагается, что при проверке запись происходит сразу в две ячейки памяти, то есть в два соседних байта, так как шина адреса 16-ти разрядная.
Если запись и чтение будут идти однобайтным способом и будет использоваться не все 16 разрядов шины данных, а только 8, то потребует времени в 2 раза больше. Просто у преподователя не корректно написано: "сначала в каждую ячейку памяти записывается число.... ". Ячейка памяти это 1 байт, а шина 16-ти разрядная, поэтому можно сразу записывать или 1 или 2 байт. Но программа тестирования записывала бы скорее всего сразу по два байта в целях экономии времени.
А формулы для решения этой задачи вы нигде не найдёте, так как для решения берутся разные формулы, многие вычисления проводятся интуитивно.
Daniyar Bokshinov
Аплодисменты Вашему энтузиазму
Ардак Макамбетов
спасибо большое! а можно вопрос....(2+2+1)*2+14=24 это значит (2 такта на чтение + 2 на запись + 1 на сравнение)*2 (т.к. число сначала из 1, потом из 0) +14(доп. такты) я правильно поняла?? вот только смущыет почему 14 прибавляем один раз?? ведь у нас 2 цикла, для проверки числа из 1 и из 0....или я ошибаюсь...?
Ардак Макамбетов
ещё не понятна вот эта строчка: "соответственно 24-х разрядную шину делим на 2 и получаем: 8388608 двухбайтных слов. " почему так получилось??
Vadim Ulanov
Если быть ещё более точным, и принять во внимание саму методику проверку памяти, то количество тактов необходимых на проверку одной ячейки рассчитывается следующим образом:
1) Записали в одну или две ячейку число состоящее из одних ЕДИНИЦ - это 2 такта + команды на организацию цикла - 14 тактов = 16 тактов
Так записываются все ячейки.
2) Считывание информации 2 такта + сравнение 1 такт + команды на организацию цикла 14 тактов = 17 тактов.
Так проверяются все ячейки на единицы.
И потом пункты 1 и 2 для проверки при записи нулей.
Тогда получается: (16+17)*2=66 тактов на полную проверку одной ячейки.
То есть во все ячейки вначале записываются единицы, потом из всех ячеек считывается информация и проверяется на равенство единицам, потом во все ячейки записываются нули, потом из всех ячеек считывается информация и проверяется на равенство нулю.
Настоящая проверка должна быть именно таким спосом и соответственно на полную проверку одной ячейки требуется 66 тактов.
1) Записали в одну или две ячейку число состоящее из одних ЕДИНИЦ - это 2 такта + команды на организацию цикла - 14 тактов = 16 тактов
Так записываются все ячейки.
2) Считывание информации 2 такта + сравнение 1 такт + команды на организацию цикла 14 тактов = 17 тактов.
Так проверяются все ячейки на единицы.
И потом пункты 1 и 2 для проверки при записи нулей.
Тогда получается: (16+17)*2=66 тактов на полную проверку одной ячейки.
То есть во все ячейки вначале записываются единицы, потом из всех ячеек считывается информация и проверяется на равенство единицам, потом во все ячейки записываются нули, потом из всех ячеек считывается информация и проверяется на равенство нулю.
Настоящая проверка должна быть именно таким спосом и соответственно на полную проверку одной ячейки требуется 66 тактов.
Похожие вопросы
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите,пожалуйста,решить задачу в Паскале.
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- Помогите,пожалуйста,решить задачу на двумерные массивы,в паскале.(задача вн.)Спасибо.
- Помогите пожалуйста решить задачу С++
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Помогите пожалуйста решить задачу в Pascal ABC
- Помогите пожалуйста решить задачу в паскале.
- помогите пожалуйста!!!!решить задачу на паскале...
А если эти проверки происходят отдельно, то прав я. Проверка 1 ячейки занимает (5 + 14)*2 = 38 тактов.
Поэтому если сразу записать и сразу считать, то мало что проверишь.
Поэтому получается, что нужно вначале записать единицы во все ячейки (это первый цикл 2+14=16 тактов), затем считать и проверить данные из всех ячеек (это второй цикл 2+1+14=17 тактов), затем нужно записать во все ячейки нули (это третий цикл 2+14=16 тактов), затем нужно считать и проверить (это 4-й цикл 2+1+14=17).
Итого получается на полную проверку одной ячейки нужно 16+17+16+17=66 тактов.
Настоящая проверка должна проходить именно так, а не сразу записал и сразу же через мгновение считал, так не проверишь память.