Скачиваний:
56
Добавлен:
16.04.2013
Размер:
123.39 Кб
Скачать

6.3.4. Вычислительные модели

Архитектура Itaniumпредлагает совершенное управление вычислительной моделью для пользователя. Пользователь может выбрать точность и диапазон результата, режим округления и ответ ловушкиIEEE. Соответственно выбор вычислительной модели может дать в результате код, которые имеет более высокую точность, или более высокую производительность, или и то и другое.

Формат файла регистров един для трех типов данных – одинарных, двойных и двойных расширенных. Так как все вычисления выполняются в регистрах (не зависимо от типа данных и их содержания), то операнды различных типов могут легко комбинироваться. Поскольку преобразования из типов памяти в формат регистрового файла делается при загрузках автоматически, то не требуется дополнительных операций для выполнения преобразования формата.

Семантики синтаксиса C, также легко эмулируются. Загрузки, автоматически преобразовывают все входные операнды в формат регистрового файла. Операнды данных различных типов, постоянно находящиеся в формате регистрового файла, а также все промежуточные результаты, теперь могут быть использованы принудительно в двойной точности, а точность результата статически указывается в коде инструкции. Вычисление, ведущее к финальному результату, может указать точность и диапазон результата (статически в коде инструкции для одинарной или двойной точности, и динамически в битах поля состояния для двойной расширенной точности). Согласование со стилем вычисленийFPIA-32 (диапазон – расширенный, точность – одинарная/двойная/расширенная), также может достигаться использованием битов поля состояния.

6.3.5. Множество полей состояния.

Регистр FPSRделится на одно главное (архитектурное) поле состояния и три дополнительных идентичных поля состояния. Эти дополнительные поля состояния могут использоваться для улучшения эффективности.

Во-первых, последовательности деления и квадратного корня (описанные в разделе 6.3.3) содержат операции, которые, на промежуточных результатах, могли бы вызвать переполнение/антипереполнение либо оказаться неточными, даже если нет финальных результатов. Для поддержки корректного состояния флага IEEE, флаги состояния этих вычислений должны быть отвергнуты. Для отказа от этих флагов может быть использовано одно из дополнительных полей состояния (обычно поле состояния 1).

Во-вторых, спекулятивные операции с плавающей точкой требуют поддержки флагов состояния спекулятивных операций, отличающихся от архитектурных флагов состояния, до того момента, пока спекуляция не завершится, а флаги не перейдут в нормальное архитектурное состояние (если они когда-нибудь это сделают). Одно из дополнительных полей состояния (обычно поле состояния 2 или 3) может использоваться для этой цели.

Рассмотрим поиск Монте-Карло из LFK-16.

DO 470 k= 1,n

k2 = k2+1

j4 = j2+k+k

j5 = ZONE(j4)

IF(j5-n ) 420,475,450

415 IF(j5-n+II ) 430,425,425

420 IF(j5-n+LB ) 435,415,415

425 IF(PLAN(j5)-R) 445,480,440

430 IF(PLAN(j5)-S) 445,480,440

435 IF(PLAN(j5)-T) 445,480,440

440 IF(ZONE(j4-1)) 455,485,470

445 IF(ZONE(j4-1)) 470,485,455

450 k3 = k3+1

IF(D(j5)-(D(j5-1)*(T-D(j5-2))**2

, +(S-D(j5-3))**2

, +(R-D(j5-4))**2)) 445,480,440

455 m = m+1

IF(m-ZONE(1) ) 465,465,460

460 m = 1

465 IF(i1-m) 410,480,410

470 CONTINUE

475 CONTINUE

480 CONTINUE

485 CONTINUE

Профилирование показывает, что наиболее часто выполняется условное выражение после оператора 450. Поэтому выгодно спекулятивно выполнить вычисление в этом условном выражении в то время, пока будут оцениваться условные выражения 415…445. Если любое из условных выражений 415…445 заставит передать управление мимо 450, то результаты (и флаги) спекулятивно вычисленных операций (условного выражения после оператора 450) могут быть отвергнуты.

Доступность нескольких дополнительных полей состояния может позволить пользователю обслуживать несколько вычислительных сред и динамически выбирать среди них операцию на основании базиса операций. Одним таким использованием является выполнение кода арифметического интервала, где каждая арифметическая операция требуется для вычисления в двух различных режимах округления, для определения интервала результата.