/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/fsm/fsm/bash-programming/lex-yacc-bash-etc/new00004.txt


Pipeline
Pipeline-Stufe = Pipeline-Segment
Pipeline-Register
Pipeline-Maschinentakt
Durchsatz einer Pipeline

1. Befehl holen
2. Befehl dekodieren
3. Operanden 
4. Operation in der ALU
5. Resultat zurückschreiben 

IF
ID
EX
MEM
WB

IF - Instruction Fetch - Befehlsholesphase 
ID - Instruction Decode/Register Fetch - Befehlsdekodier-Phase/Operanden-Hole-Phase
EX - Execute/Adress Calculation - Ausführungsphase
MEM - Memory Access - Speicherzugriffsphase
WB - Write Back - Zurückschreibephase

- Pipeline-Konflikte
- Pipeline-Hemmnisse = Pipeline-Hazards

1. Datenkonflikte
2. Struktur- und Ressourcenkonflikte
3. Steuerflusskonflikte

Datenkonflikte:
1. Echte Datenabhängigkeit - Lese-nach-Schreibe-Konflikte - Read after Write - RAW
2. Gegenabhängigkeit - Anti Dependence - WAR
3. Ausgabeabhängigkeit - Output Dependence - WAW

Lösung:
- Statische Befehlsanordnung durch den Compiler
- Erkennung durch Hardware: Pipeline-Sperrung, Leerlauf der Pipeline - Pipeline  Interlocking - Pipeline Stalling

1. Steuerflusskonflikte

- BTAC - Branch Target Adress Cache
- Branch Adress Cache
- BTB - Branch Target Buffer
- Return Adress Cache - bei Call

1. Predict Always not taken
2. Predict Always taken
3. Predict Backward taken, forward not taken 

1-Bit-Prädiktor
- genommen - T - Taken 
- nicht genommen - NT - Not Taken 

2. Bit-Prädiktor
- Predict strongly taken 
- Predict weakly taken 
- Predict weakly not taken 
- Predict strongly not taken 

fopen
fclose
putc
fputc
getc
fgetc
getch
ungetc
gets
fgets
puts
fputs
printf
scanf
fprintf
fscanf
sprintf
scanf
getline
fflush
fseek
rewind
ftell
feof
strerror
perror
ferror
rename
setbuf
setvbuf
fsetpos
fgetps

array_key_exists
in_array
krsort
ksort
sort
rsort
arsort
asort
r_print
explode
implode

html
head
title
body
link
base
meta
style