ОПТИМИЗИРОВАННАЯ ЦЕПЬ ЦЕЛОЧИСЛЕННОГО ДЕЛЕНИЯ

1. Цепь целочисленного деления, содержащая:
вход делимого, который получает целочисленное делимое А;
вход делителя, который получает целочисленный делитель В;
выход частного, который выдает целочисленное частное q, и
ядро деления, которое выполняет метод Гольдшмидта для деления А на В для получения q;
где во время выполнения операции предварительной обработки, выполнение которой начинается до начала выполнения метода Гольдшмидта, ядро деления проверяет условие А<В, и
если А<В, ядро деления устанавливает q=0 без выполнения метода Гольдшмидта.
2. Цепь целочисленного деления по п. 1,
в которой во время выполнения операции предварительной обработки ядро деления определяет выполнение равенства В=0, и
если В=0, ядро деления запускает прерывание деления на ноль без выполнения метода Гольдшмидта.
3. Цепь целочисленного деления по п. 1,
в которой цепь деления является 64-битной цепью целочисленного деления, где А, В и q являются 64-битными целыми числами, и
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1; и
если ndq≤27, ядро деления пропускает операцию iter1, при этом выполняя метод Гольдшмидта.
4. Цепь целочисленного деления по п. 1,
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет из acnt и bcnt, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, и
если остаток всегда положительный, ядро деления пропускает операцию back-mul, при этом выполняя метод Гольдшмидта.
5. Цепь целочисленного деления по п. 4,
в которой цепь деления является 64-битной цепью целочисленного деления, где А, B и q являются 64-битными целыми числами,
причем определение того, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, предполагает определение следующего:
acnt≤bcnt;
bcnt≠64 и
min(max(-bcnt, -62), -54)≤acnt-64.
6. Цепь целочисленного деления по п. 1,
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1; и
если ndq=1, А≥В, a bcnt≠64, ядро деления устанавливает q=1 без выполнения метода Гольдшмидта.
7. Цепь целочисленного деления по п. 1, в которой, если во время выполнения операции предварительной обработки условие исключений не возникает, метод Гольдшмидта выполняется без изменений, что предусматривает выполнение указанных далее операций:
операции поиска по таблице, Т=table_lookup(B);
0
0
0
0
аcnt
bcnt
операции масштабирования, n=Аор*Т; d=Вор*Т; r=~d, где Аор=A*2, а Вор=В*2, где «~» представляет оператор поразрядного дополнения до единицы;
1
0
0
1
0
0
1
1
операции iter1, n=n*r; d=d*r; r=~d;
ƒinal
1
1
операции iter2, n=n*r+INC, где INC содержит 2М-битную постоянную поправки;
trunc
ƒinal
-(2*M-1)+ndq
операции смещения и усечения, q=ƒloor(n*2);
trunc
операции back-mul, remainder=Bop*q-А, и
trunc
tunc
операции округления, if remainder<0 then q-1 else q.
8. Система, содержащая:
процессор и
запоминающее устройство, соединенное с процессором,
где в процессоре содержится цепь целочисленного деления, содержащая:
вход делимого, который получает целочисленное делимое А;
вход делителя, который получает целочисленный делитель В;
выход частного, который выдает целочисленное частное q, и
ядро деления, которое выполняет метод Гольдшмидта для деления А на. В для получения q;
где во время выполнения операции предварительной обработки, выполнение которой начинается до начала выполнения метода Гольдшмидта, ядро деления проверяет условие А<В, и
если А<В, ядро деления устанавливает q=0 без выполнения метода Гольдшмидта.
9. Система по п. 8,
в которой во время выполнения операции предварительной обработки ядро деления определяет выполнение равенства В=0, и
если В=0, ядро деления запускает прерывание деления на ноль без выполнения метода Гольдшмидта.
10. Система по п. 8,
в которой цепь деления является 64-битной цепью целочисленного деления, где А, B и q являются 64-битными целыми числами; и
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1, и
если ndq≤27, ядро деления пропускает операцию iter1, при этом выполняя метод Гольдшмидта.
11. Система по п. 8,
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет из acnt и bcnt, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, и
если остаток всегда положительный, ядро деления пропускает операцию back-mul, при этом выполняя метод Гольдшмидта.
12. Система по п. 11,
в которой цепь деления является 64-битной цепью целочисленного деления, где А, В и q являются 64-битными целыми числами,
причем определение того, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, предполагает определение следующего:
acnt≤bcnt;
bcnt≠64 и
min(max(-bcnt, -62), -54)≤acnt-64.
13. Система по п. 8,
в которой во время выполнения операции предварительной обработки ядро деления:
определяет acnt, представляющее собой количество нулей в А;
определяет bcnt, представляющее собой количество нулей в В;
определяет ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1, и
если ndq=1, acnt≤bcnt и bcnt≠64, ядро деления устанавливает q=1 без выполнения метода Гольдшмидта.
14. Система по п. 8, в которой, если во время выполнения операции предварительной обработки условие исключений не возникает, метод Гольдшмидта выполняется без изменений, что предусматривает выполнение указанных далее операций:
операции поиска по таблице: Т=table_lookup(B);
0
0
0
0
acnt
bcnt
операции масштабирования: n=Аор*Т; d=Вор*Т; r=~d, где Аор=2, а Вор=2, где «~» представляет оператор поразрядного дополнения до единицы;
1
0
0
1
0
0
1
1
операции iter1: n=n*r; d=d*r; r=~d;
ƒinal
1
1
операции iter2: n=n*r+INC, где INC содержит 2М-битную постоянную поправки;
trunc
ƒinal
-(2*M-1)+ndq
операции смещения и усечения: q=ƒloor(n*2);
trunc
операции back-mul: remainder=Bop*q-А и
trunc
trunc
операции округления: if remainder <0, then q-1 else q.
15. Способ выполнения операции целочисленного деления, предусматривающий:
получение целочисленного делимого А;
получение целочисленного делителя В;
выполнение операции предварительной обработки, выполнение которой начинается до начала выполнения метода Гольдшмидта, причем выполнение операции предварительной обработки предусматривает проверку выполнения условия А<В;
если А<В, установку целочисленного частного q=0 без выполнения метода Гольдшмидта;
если во время выполнения операции предварительной обработки условие исключений не возникает, метод Гольдшмидта выполняется без изменений для получения q; и
вывод q.
16. Способ по п. 15,
в котором выполнение операции предварительной обработки предусматривает определение выполнения равенства В=0, и
если В=0, запуск прерывания деления на ноль без выполнения метода Гольдшмидта.
17. Способ по п. 15,
в котором цепь деления является 64-битной цепью целочисленного деления, где А, В и q являются 64-битными целыми числами;
где выполнение операции предварительной обработки предусматривает выполнение следующих операций:
определение acnt, представляющее собой количество нулей в А;
определение bcnt, представляющее собой количество нулей в В;
определение ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1, и
если ndq≤27, пропуск операции iter1, при этом выполняя метод Гольдшмидта.
18. Способ по п. 15,
где выполнение операции предварительной обработки предусматривает выполнение следующих операций:
определение acnt, представляющее собой количество нулей в А;
определение bcnt, представляющее собой количество нулей в В;
определение из acnt и bcnt, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, и
если остаток всегда положительный, пропускание операции back-mul с выполнением метода Гольдшмидта.
19. Способ по п. 18,
в которой цепь деления является 64-битной цепью целочисленного деления, где А, В и q являются 64-битными целыми числами; и
причем определение того, является ли остаток, вычисленный методом Гольдшмидта, всегда положительным, предполагает определение следующего:
acnt≤bcnt;
bcnt≠64 и
min(max(-bcnt, -62), -54)≤acnt-64.
20. Способ по п. 15,
где выполнение операции предварительной обработки предусматривает выполнение следующих операций:
определение acnt, представляющее собой количество нулей в А;
определение bcnt, представляющее собой количество нулей в В;
определение ndq, представляющее собой количество битов в q путем расчета ndq=bcnt-acnt+1, и
если ndq=1, А≥В и bcnt≠64, установку q=1 без выполнения метода Гольдшмидта.