48МГц не будет потому как это всего 4 цикла на период, т.е. даже если бы запись в порт была за 2 такта, нужен ещё как минимум переход. На самом деле у ARM9 общение ядра с периферией происходит через разные шины: AHB, APB и т.п., порты ввода-вывода обычно сидят на медленной шине APB, соответственно нужно учитывать, что превысить её частоту никак не удастся. Плюс по архитектурным причинам операция вывода может требовать более одного такта шины. То, что на Вашем МК Вы получили 9МГц, можете считать неплохим результатом. ARMы не предназначены для быстрого ногодрыга, кроме того, многие операции имеют нефиксированное время выполнения (в отличие от 8-битников), это тоже нужно учитывать