Misalkan saya diberi array integer lebar tetap (yaitu mereka cocok dengan register lebar ), . Saya ingin menghitung jumlah pada mesin dengan aritmatika komplemen 2's, yang melakukan penambahan modulo dengan semantik sampul. Itu mudah - tetapi jumlahnya mungkin melebihi ukuran register, dan jika ya, hasilnya akan salah.
Jika jumlahnya tidak melimpah, saya ingin menghitungnya, dan untuk memverifikasi bahwa tidak ada kelebihan, secepat mungkin. Jika jumlahnya melimpah, saya hanya ingin tahu itu terjadi, saya tidak peduli dengan nilai apa pun.
Menambahkan angka secara naif tidak berfungsi, karena jumlah parsial mungkin meluap. Misalnya, dengan register 8-bit, adalah valid dan memiliki jumlah , meskipun jumlah parsial kisaran register .
Jelas saya bisa menggunakan register yang lebih besar sebagai akumulator, tapi mari kita asumsikan kasus yang menarik di mana saya sudah menggunakan ukuran register terbesar.
Ada teknik terkenal untuk menambahkan angka dengan tanda kebalikannya sebagai jumlah parsial saat ini . Teknik ini menghindari luapan pada setiap langkah, dengan biaya tidak ramah-cache dan tidak mengambil banyak keuntungan dari prediksi cabang dan eksekusi spekulatif.
Apakah ada teknik yang lebih cepat yang mungkin mengambil keuntungan dari izin untuk melimpah jumlah parsial, dan lebih cepat pada mesin khas dengan bendera melimpah, cache, prediktor cabang, dan eksekusi serta pemuatan spekulatif?
(Ini adalah tindak lanjut dari penjumlahan aman Overflow )