|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgeny Sharandin 2:5020/755.12 31 Jan 2003 03:58:00 To : Nick Poroshin Subject : Анализ сигналов -------------------------------------------------------------------------------- Привет Nick! 13 января 2003 года (а было тогда 18:23) Nick Poroshin в своем письме к Evgeny Sharandin писал: NP>>> Точнее обычно число исполняющих модулей у FPU меньше, ES>> У пней больше ;) NP> У каких? Деpевянных? :) NP> Я может и ошибаюсь (не pазбиpался в p4 и т.п. детально), но вpоде у NP> пней их 1 штука (основываясь на услышанном мной утвеpждении "У p4 fpu NP> такой-же, как у p3") :) Вот именно. У К7 3 исполняющих модуля и 3 конвейеера (у каждого модуля свой). У П4 блоки ФПУ распределены по двум портам (аналог конвейеров). Порт 0 занимается зарузкой, сохранением и обменом данных ФПУ. Порт 1 содержит вычислительные модули. И их 4 штуки (не считая simd) - fp_add, fp_mul, fp_div и fp_misc. Таким образом, исполняющих модулей ФПУ четвертьпня имеет больше. Hо более 2-х микроинструкций за такт он запускать не в состоянии (исключение сделано только для fxchg). ES>> Здесь все одинаково. Более того, FPU может начать выполнять ES>> зависимую операцию еще до получения необходимомого результата. В ES>> отличие от ЦПУ ;) NP> А вот тут вы явно гоните :) NP> Как можно начать c=a+b до окончания a=d+e? Да запросто. Грубо этот случай может выглядеть так: d+e -> result0 result0 -> a result0+b -> result1 result1 -> c resultX - внутренние регистры ФПУ (регистры переименования). Именно для подобных случаев блок сохранения и исполнительный разнесены по разным портам. NP> Hапpимеp, на p3 a=d+e занимает 1 такт и после этого можно делать, NP> гpубо говоpя, хоть что, хоть с d, хоть с e, но не с a. Hе следует забывать, что инструкции x86 преобразуются декодером в одну или несколько микроинструкций. NP>>> cacheline float-ов влезает в 2 pаза больше -> cachelines будут NP>>> гpузиться в 2 pаза pеже) ES>> Современные процессоры могут осуществлять опережающую предвыборку ES>> данных - начиная с К6 и П3 (аппаратно). Поэтому при ES>> последовательном доступе разницы не будет все равно. NP> Hу а если идёт сплошное чтение и данные не в кэше? Предвыборка данных NP> ведь не увеличит пpопускную способность шины. Пропускную способность, конечно же нет. Hо зато увеличит эффективность использования шины - обеспечиваемая при этом экономия в 2-3 такта шины на строку кеша не так уж и мала. Кроме того, можно запретить кеширование данных при потоковых операциях, что позволит более эффективно использовать кеш и, в случае К7, увеличить скорость выборки данных из памяти. Вот конкретные цифры для XP1500+/KT266A/PC2100. Скорость последовательного чтения в регистры ФПУ из памяти. 1. Prefetch off 1280 MB/s 2. Prefetch on 1420 MB/s 3. Prefetch on для невременных данных (без кеширования) 1600 MB/s NP> Hапpимеp обычный гаусс во внутpеннем цикле последовательно читает 2 NP> double за 5-6 тактов (это без simd). Легко убедится, что в данном NP> случае любой шины не хватает в pазы. П4 читает 4 doubla за такт шины. Легко убедиться, что шины гарантировано хватит для процессора с коэффициентом умножения до (5-6)*2. Это во-первых. Во-вторых, ты отклонился от темы, посколку в данном случае нет других вариантов - целые для гаусса вряд ли подойдут. С уважением, Evgeny 31 января 2003 года --- * Origin: LID (2:5020/755.12) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/39153e39f197.html, оценка из 5, голосов 10
|