CPU mit Pipeline

Im Folgenden ein Ansatz für eine CPU mit Pipeline in Verilog. Im beispiel, dass 8 mal inkrementieren sollte, sehen wir schön, dass in einer Pipeline Operationen, deren Argumente von einer vorhergehenden Operation abhängt, nicht dicht aufeinander folgen dürfen. Denn zum Zeitpunkt des ladens der Argumente steht das Resultat nicht zur Verfügung. Daher zählt das vorliegende Beispiel nur bis 3 statt bis 8.

Quartus Projekt Download: ex3_pipeline.zip

Wie verbinde ich Ports mit verschiedenen Breiten?

Error: Width mismatch in port “wraddress[9..0]” of instance “inst1” and type ex3_lpm_ram_dp_0 — source is “”DATA_ADR_WR[15..0]” (ID EX2_CPU_PIPELINE:inst)”
Error: Width mismatch in port “rdaddress[9..0]” of instance “inst1” and type ex3_lpm_ram_dp_0 — source is “”DATA_ADR[15..0]” (ID EX2_CPU_PIPELINE:inst)”

Antwort: Mit benannten Verbindungen (—X). z.B.

DATA_ADR[15..0] |—-X DATA_ADR[15..0] DATA_ADR[9..0] X—-| rdaddress[9..0]

12 Cores in amd64 Linux 3.0

vmk@vmk-12cc:~/makehuman/render/renderman_output/ribFiles$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 44
model name	: Intel(R) Xeon(R) CPU           E5645  @ 2.40GHz
stepping	: 2
cpu MHz		: 1600.000
cache size	: 12288 KB
physical id	: 0
siblings	: 12
core id		: 0
cpu cores	: 6
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 11
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt aes lahf_lm ida arat epb dts tpr_shadow vnmi flexpriority ept vpid
bogomips	: 4800.21
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:
 Continue reading 

Einführung VERILOG

Projekt IR eines HARVARD-Mikroprozessors

             Clock, Synchronisation

Programm  <-> uP <-> Daten

            State Machine 

            Vektor Tabelle
  1. Synchronisierter Reset initialisiert State Machine
  2. StateMachine holt Reset Vektor aus Tabelle (Fix festgelegt, kann z.T. verschoben werden)
  3. Befehl an Reset Vektor kommt in Pipeline, Prefetch Register
Was ist Verilog:
VHDL vs. Verilog: verschiedene Sprachansätze:
Verilog: up to date, letzte Version von 2007, entstand aus C und VHDL, hat Funktionen, die in VHDL nicht vorhanden sind.
Schreibweise unterschiedlich, kein Deckungsgrad da Befehle unterschiedlich
Internal Error: Sub-system: AMERGE, File: /quartus/atm/amerge/amerge_kpt_op.cpp, Line: 220
cmp_merge_kpt_db
Stack Trace:
0x3DD57   : amerge_mini_merge + 0x3A977 (atm_amerge)

End-trace

Quartus II Version 9.0 Build 235 06/17/2009 SJ Web Edition
Service Pack Installed:  2
Internal Error: Sub-system: AMERGE, File: /quartus/atm/amerge/amerge_kpt_op.cpp, Line: 220
cmp_merge_kpt_db
Stack Trace:
0x3DD57   : amerge_mini_merge + 0x3A977 (atm_amerge)
0x30D5    : cfg_force_qexe_mode_off + 0x1E15 (ccl_cfg_ini)
0x3D4F2   : amerge_mini_merge + 0x3A112 (atm_amerge)
0x444DD   : amerge_mini_merge + 0x410FD (atm_amerge)

0x33F1    : amerge_mini_merge + 0x11 (atm_amerge)

0x4B0D    : MEM_SEGMENT_INTERNAL::splay_heap + 0x14D (ccl_mem)
0xA128    : mem_realloc_wrapper + 0x188 (ccl_mem)

0x94F2    : MEM_SEGMENT_INTERNAL::locked_allocate + 0x62 (ccl_mem)
0x2931    : RDB_WAVEFORM_OBJECT::RDB_WAVEFORM_OBJECT + 0x211 (db_rdb)
0x20A6    : QCU_ACF_SETTING::~QCU_ACF_SETTING + 0x126 (comp_qcu)
0x5A66    : QCU_ACF_SETTING::operator= + 0x3366 (comp_qcu)

0xCE32    : qexe_get_command_line + 0x3A2 (comp_qexe)
0x38E3    : QCU_ACF_SETTING::operator= + 0x11E3 (comp_qcu)
0x7C29    : QCU_FRAMEWORK::check_license + 0x139 (comp_qcu)
0xFBBD    : qexe_process_cmdline_arguments + 0x34D (comp_qexe)

End-trace

Quartus II Version 9.0 Build 235 06/17/2009 SJ Web Edition
Service Pack Installed:  2