288
5 Bewertung und Validierung
wobei Data i der Datenwert ist, der in Befehl i benutzt wird, und DAddr i ist dessen
Adresse.
Der Term E mem_dat a ist nur dann relevant, wenn tatsächlich auf den Speicher zugegriffen wird:
E mem_dat a =
m
i=1
{BaseMem(DataMem, dir, W or d_width)
+α 9 ∗ w(DAddr i ) + β 9 ∗ h(DAddr i−1 , DAddr i )
(5.37)
+α 10,dir ∗ w(Data i ) + β 10,dir ∗ h(Data i−1 , Data i )}
wobei BaseMem die Basiskosten für den Speicherzugriff mit Richtung dir sind.
Der Term E mem_instr kann wie folgt berechnet werden:
E mem_instr =
m
i=1
{BaseMem(InstrMem,Word_width i )
+α 7 ∗ w(I Addr i ) + β 7 ∗ h(I Addr i−1 , I Addr i )
(5.38)
+α 8 ∗ w(I Data i ) + β 8 ∗ h(I Data i−1 , I Data i )}
wobei BaseMem die Basiskosten für den Befehlsspeicherzugriff sind, I Addr i ist die
Adresse des Befehls und I Data i ist der Befehl i selbst.
Der Term E cpu_instr kann aus der folgenden Gleichung berechnet werden:
E cpu_instr =
m
i=1
{BaseCPU(Opcode i ) + FUChange(Instr i−1 , Instr i )
+α 4 ∗ w(I Addr i ) + β 4 ∗ h(I Addr i−1 , I Addr i )
+
s
j=1
(α 1 ∗ w(Imm i, j ) + β 1 ∗ h(Imm i−1, j , Imm i, j ))
(5.39)
+
t
k=1
(α 2 ∗ w(Reg i,k ) + β 2 ∗ h(Reg i−1,k , Reg i,k ))
+
t
k=1
(α 3 ∗ w(RegV al i,k ) + β 3 ∗ h(RegV al i−1,k , RegV al i,k ))}
wobei BaseCPU die Basiskosten für den Befehlscode Opcode i sind. FUChange(..)
stellt den Energieverbrauch für den Übergang von Befehl i − 1 zu Befehl i dar. Imm
modelliert den Einfluss von bis zu s Direktoperanden per Befehl. Reg i,k bezieht
sich auf die Registernummern von bis zu t Registern pro Befehl und RegV al i,k
modellieren bis zu t Registerwerte pro Befehl.
Zur Bestimmung der Konstanten wurden spezielle Befehlssequenzen entworfen.
Précédent

- 307/485

Suivant