Arch: edit

This commit is contained in:
2025-01-15 15:19:34 +03:00
parent 3a96c27c48
commit 0825ac9659
16 changed files with 129 additions and 144 deletions

View File

@ -1,19 +1,22 @@
#### Пример разворачивания цикла.
```assembly
```c
for (i = 1000; i>0; i = i-1)
x[i]= x[i] + s;
x[i] = x[i] + s;
```
Без оптимизации:
Loop: LD [R1], F0 1
простой 2
ADD F2, F0, F4 3
простой 4
простой 5
ST F4, [R1] 6
ADD R1, R3, R1 7
простой 8
BNE R1, R2, Loop 9
простой 10
```armasm
Loop: LD [R1], F0 ; 1
; простой ; 2
ADD F2, F0, F4 ; 3
; простой ; 4
; простой ; 5
ST F4, [R1] ; 6
ADD R1, R3, R1 ; 7
; простой ; 8
BNE R1, R2, Loop ; 9
; простой ; 10
```
- 4 копии цикла развернуты без повторного использования регистров.
@ -24,20 +27,20 @@ Loop: LD [R1], F0 1
Разворачивание цикла сразу с оптимизацией:
| Loop: | LD [R1], F0 | 1 |
| :--: | :--: | :--: |
| | LD [R1-8], F6 | 2 |
| | LD [R1-16], F10 | 3 |
| | LD [R1-24], F14 | 4 |
| | ADD F2, F0, F4 | 5 |
| | ADD F2, F6, F8 | 6 |
| | ADD F2, F10, F12 | 7 |
| | ADD F2, F14, F16 | 8 |
| | ST F4, [R1] | 9 |
| | ST F8, [R1-8] | 10 |
| | ADD R1, R3, R1; | R3 -=32; 11 |
| | ST F12, [R1+16] | 12 |
| | BNE R1, R2, Loop | 13 |
| | ST F16, [R1+8]; | 8-32 = -24 |
| Loop: | LD [R1], F0 | 1 |
| :---: | :--------------: | :---------: |
| | LD [R1-8], F6 | 2 |
| | LD [R1-16], F10 | 3 |
| | LD [R1-24], F14 | 4 |
| | ADD F2, F0, F4 | 5 |
| | ADD F2, F6, F8 | 6 |
| | ADD F2, F10, F12 | 7 |
| | ADD F2, F14, F16 | 8 |
| | ST F4, [R1] | 9 |
| | ST F8, [R1-8] | 10 |
| | ADD R1, R3, R1; | R3 -=32; 11 |
| | ST F12, [R1+16] | 12 |
| | BNE R1, R2, Loop | 13 |
| | ST F16, [R1+8]; | 8-32 = -24 |
Время итерации цикла сократилось до 14 тактов или $\frac{14}{4}=3.5$ для исходной итерации; Ускорение $\frac{6}{3.5}=1.7$