Inhaltsverzeichnis

CPU Entwurf mit VHDL

Prüfer: Marc Reichenbach
Beisitzer: Sebastian Rachuj

Vorbereitung/Allgemeines

War eine super faire und entspannte Prüfung. Marc schubst einen in die richtige Richtung, wenn man gerade mal nicht auf die gewünschte Antwort kommt.

Fragen aus der Vorlesung wiederholen hilft extrem.

Prüfungsablauf

Was ist ein FPGA?

Warum FPGA und nicht Universalprozessor?

Was ist VHDL?

Was ist der Unterschied zu zB. C?

Woraus ist ein VHDL Modul aufgebaut?

Bitte die Schnittstelle für einen Multiplizierer für 16 bit Operanden und die architecture aufschreiben.

entity mul is
  port (a: in std_logic_vector(15 downto 0);
          b: in std_logic_vector(15 downto 0);
          o: out std_logic_vector (31 downto 0));
end mul;
 
architecture behav of mul is
  -- später hier: constant b: integer := 4 bzw. 5;
begin
process(a,b) begin
  0 <= a * b;
end process;
end behav;

Braucht man dafür einen Prozess?

Streich mal den zweiten Eingang und ersetz den durch eine Konstante '4'. Wie wird das in Hardware abgebildet?

Wo finden wir denn solche Shifter noch in der CPU?

Jetzt ist die Konstante '5', wie sieht das jetzt aus?

Geht das nicht ressourcenschonender?

Skizzier mal eine Single-Cycle CPU.

Schauen wir uns mal das Register-File genauer an. Wie viele Register will man denn?

Wie kann die use-Latency mit vielen Registern versteckt werden? (use latency wurde nochmal erklärt und dann ein Bsp. gegeben)

  for i in ...
    lw ti, a[i]
    add tx, ti, ti
  end for 
for i in .... i+= 3
  lw ti, a[i]
  lw ti+1, a[i+1]
  lw ti+2, a[i+2]
  
  add tx, ti, ti
  add ty, ti+1, ti+1
  add tz, ti+2, ti+2
end for;

Chef sagt so und so viele Register, dadurch ist der kritische Pfad aber nicht mehr akzeptabel. Wie löst du das Problem?

Was gibt es für potentielle Probleme beim Pipelining?

Was kann hier auftreten?

Wie viele Takte verliere ich im schlimmsten Fall bei einem Control-Hazard?

Kann die Sprung-Entscheidung schon früher getroffen werden?

Wie könnte durch das Aufgeben von Flexibilität, doch schneller einer Sprung-Entscheidung getroffen werden?