Автор,нестыковочка: Архитектура IBM System/360 - в Штатах появилась в середине 60-х, в СССР - архитектурный клон ЕС ЭВМ в начале 70-х (школу заканчивал). НЦ - это конец 70-х, институт заканчивал, была одна такая на кафедре. Но тогда уже вовсю цвели СМ-4/Электроника-60 - клоны PDP-11. У НЦ была оригинальная система команд, но софт мизерный
"Однако оригинальная архитектура «Электроника НЦ» не получила большого распространения. Впоследствии советская промышленность сделала ставку на единую серию ЕС ЭВМ. За основу взяли стандартную архитектуру IBM System/360"
Насколько я помню, в системе команд PDP-11 (не PDP-8, про PDP-7 не знаю) операции типа *p++ для указателя можно скомпилировать в ОДНУ команду с косвенной автоинкрементной регистровой адресацией (если адрес-указатель в регистре, естественно).
Проверял на двумерных массивах на Java и на С++, а также на одномерных, с искусственно реализованной двумерностью вида A[i*n+j].
C++
[][]One time 90 mcs
[][]Two time 710 mcs
[]One time 80 mcs
[]Two time 830 mcs
Во всех случаях, за исключение первого (массив массивов) имеем одну и ту же физическую модель — обычной линейной памяти (двумерный массив в Си «строгается» по строчкам). Вывод: разные скорости — эффект вытеснения из кэша хоть по LRU, хоть по FIFO. Если «прыгать» по адресам через n элементов (т.е. по столбцам), то независимо от размера подгружаемого в кэш блока периодически будет возникать ситуация, когда будет вытесняться тот блок, в которому будет СЛЕДУЮЩЕЕ обращение. Разница, похоже, соответствует отношению времени доступа к «оперативной памяти» и кэш.
Автор,нестыковочка: Архитектура IBM System/360 - в Штатах появилась в середине 60-х, в СССР - архитектурный клон ЕС ЭВМ в начале 70-х (школу заканчивал). НЦ - это конец 70-х, институт заканчивал, была одна такая на кафедре. Но тогда уже вовсю цвели СМ-4/Электроника-60 - клоны PDP-11. У НЦ была оригинальная система команд, но софт мизерный
"Однако оригинальная архитектура «Электроника НЦ» не получила большого распространения. Впоследствии советская промышленность сделала ставку на единую серию ЕС ЭВМ. За основу взяли стандартную архитектуру IBM System/360"
Сама себя переписывает в предыдущее слово - единственный в мире? вариант программы, исполняемый с декрементом счетчика команд !!!!!!
Насколько я помню, в системе команд PDP-11 (не PDP-8, про PDP-7 не знаю) операции типа *p++ для указателя можно скомпилировать в ОДНУ команду с косвенной автоинкрементной регистровой адресацией (если адрес-указатель в регистре, естественно).
C++
[][]One time 90 mcs
[][]Two time 710 mcs
[]One time 80 mcs
[]Two time 830 mcs
Во всех случаях, за исключение первого (массив массивов) имеем одну и ту же физическую модель — обычной линейной памяти (двумерный массив в Си «строгается» по строчкам). Вывод: разные скорости — эффект вытеснения из кэша хоть по LRU, хоть по FIFO. Если «прыгать» по адресам через n элементов (т.е. по столбцам), то независимо от размера подгружаемого в кэш блока периодически будет возникать ситуация, когда будет вытесняться тот блок, в которому будет СЛЕДУЮЩЕЕ обращение. Разница, похоже, соответствует отношению времени доступа к «оперативной памяти» и кэш.