Незважаючи на те, що всі поточні процесори використовують ітеративний підхід, як підказує aterrel , було проведено певну роботу над неітераційними підходами. Змінна точність поділу з плаваючою комою та квадратного кореня розповідає про неітераційну реалізацію поділу з плаваючою комою та квадратний корінь у FPGA , використовуючи таблиці пошуку та розширення рядів Тейлора.
Я підозрюю, що ті ж методики дозволяють звести ці операції до одного циклу (пропускна здатність, якщо не затримка), але вам, ймовірно, знадобляться величезні таблиці пошуку, і, таким чином, великі площі кремнієвої нерухомості для цього .
Чому це було б нездійсненно?
При розробці процесорів можна зробити багато компромісів. Функціональність, складність (кількість транзисторів), швидкість та енергоспоживання взаємопов'язані, і рішення, прийняті під час проектування, можуть зробити величезний вплив на продуктивність.
Сучасний процесор, ймовірно, міг би мати головний блок з плаваючою комою, який виділяє достатню кількість транзисторів на кремнію для виконання поділу з плаваючою комою в одному циклі , але навряд чи це буде ефективним використанням цих транзисторів.
Десятиліття тому плаваюча точка багаторазово зробила цей перехід від ітераційного до неітераційного. У цей час одночасний цикл множення і навіть множення-накопичення є звичним явищем навіть у мобільних процесорах.
До того, як воно стало ефективним використанням бюджету транзисторів, його множення, як і ділення, часто виконували ітераційним методом. Тоді спеціальні процесори DSP могли б присвятити більшу частину свого кремнію одному блоку швидкого множення накопичення (MAC) . Процесор Core2duo має плаваючу крапку затримку з 3 (значення виходить із циклу трубопроводу 3 після того, як він увійшов), але може мати 3 мультиплікації під час польоту одразу, що призводить до пропускної спроможності одного циклу, тим часом що блок SSE2 може викачайте кілька множин FP за один цикл.
Замість того, щоб присвячувати величезні площі кремнію для однорозрядного подільного блоку, сучасні процесори мають кілька одиниць, кожен з яких може виконувати операції паралельно, але оптимізовані для власних конкретних ситуацій. Насправді, як тільки ви взяти до уваги SIMD інструкцій , таких як SSE або CPU інтегрованої графіки в Sandy Bridge або більш пізньої версії процесора, може бути багато таких чисел з плаваючою комою ділять блоки на CPU.
Якби загальний поділ з плаваючою комою був важливішим для сучасних процесорів, тоді, можливо, буде доцільно виділити достатню кількість кремнію, щоб зробити його одним циклом, проте більшість виробників чіпів вирішили, що вони можуть краще використовувати цей кремній, використовуючи ці ворота для інших речей . Таким чином, одна операція проходить повільніше, але в цілому (для типових сценаріїв використання) процесор швидший і / або споживає менше енергії.