Тенденции в CPU programming-environment.
Базовое целочисленное ядро
+ FP (RISC)
+ векторные целочисленные инструкции (MMX)
+ векторные FP инструкции (SSE/SSE2)
+ команды иерархии памяти (SSE2)
матричные команды
зацепление операций
Регистр версии процессора
Удобство определять тип и возможности процессора прямо
а не базируясь на косвенных признаках
TODO: Пример косвенного определения для x86
и пример CPUID.
Счетчики производительности
Time Base Facility (Time stamp counter)
каждый такт увеличивается на 1
(минусы: когда процессор управляет своей частотой динамически,
время тактов бывает различное)
Performance monitoring
TODO: Примеры событий и регистров по их управлению
Управление регионами памяти
Cached Regions Controls
В микропроцессорной системе в физическом адрессном пространстве существуют
много различных видов памяти:
Оперативная память
Регистры ввода/вывода отображенные в память
видеобуфер
Очевидно что эти регионы должны иметь как минимум разные политики кэширования
например память кэшировать на запись хорошо,
видеобуфер кэшировать на запись плохо, а на чтение хорошо (если только его не
изменяет какой нибудь 3D engine).
Регистры ввода/вывода кэшировать просто нельзя.
BIOS который копируется из ROM в оперативную память для быстродействия
может кэшироваться, но не должен модифицироваться.
Кроме того современные процессоры поддерживают out-of-order execution,
а порядок операций ввода/вывода в некоторых случаях критически важен
-------------------------------------------------------------
Speculative Memory
Cache WB Read Ordering
-------------------------------------------------------------
Write Protected Yes No Yes Speculative
Write Back Yes Yes Yes Speculative
Write Through Yes No Yes Speculative
Write Combining No No Yes Weak
Uncachable No No No Strong
-------------------------------------------------------------
В принципе OS может настроить все эти параметры в таблицах страниц.
Но это неэффективно, поэтому в современные процессоры добавлены регистры
которые позволяют настроить эти параметры для регионов физической памяти.
При обращении параметры из этих регистров как правило перебивают параметры
выставленные в таблицах страниц.
TODO: Примеры
Uncached:
Write Combining:
Write Through
Write Back