xeon'da addq 2 saat döngüsü gerektiriyor mu?


2

Bir xeon'a uzun ints eklemek için kaç döngü gereklidir?

zamanlama denemelerinde, 2 saat tikine ihtiyaç duyulduğu anlaşılmaktadır.

/ proc / info diyor ki

Model adı: Intel (R) Xeon (R) İşlemci X5660 @ 2.80GHz

örnek c kodu (loop.02.c)

unsigned long i, j=0;
for(i=0; i<(0xFFFFFFFF);i++)   j+=3;

assembler kodu

21:loop.02.c     **** for(i=0; i<(0xFFFFFFFF);i++) j+=3;
34                            .loc 1 21 0
35 001e 48C745F0              movq    $0, -16(%rbp)
35      00000000
36 0026 EB0A                  jmp     .L2
37                    .L3:
38 0028 488345F8              addq    $3, -8(%rbp)
38      03
39 002d 488345F0              addq    $1, -16(%rbp)
39      01
40                    .L2:
41 0032 B8FEFFFF              movl    $4294967294, %eax
41      FF
42 0037 483945F0              cmpq    %rax, -16(%rbp)
43 003b 76EB                  jbe     .L3

böylece döngü 5 komutları çalıştırır: addq addq movl cmpq jbe

döngü 0xFFFFFFFF = 16 ^ 8 = 4294967296 = 4G kez tekrar eder

/ usr / bin / time -f% e ./loop.02

1078 saniye verir, neredeyse tümü döngü içindedir.

4G * 5 talimat / 10.78 saniye = 1.85G talimat / saniye

reklamı yapılan 2.80GHz devir / sn'ye karşılık

ortalama 2.8 / 1.8 = 1.6 devir / öğretim için

Örneğin, döngüdeki 5 komuttan 2'sinin 2 döngü alması ve diğerleri 1 döngü alması durumunda bu oran anlamlı olur.

Bu zamanlama sonuçlarının doğru yorumlanması mı?

talimat başına döngü sayısının belirtimi nerededir?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.