source: trunk/processor.cpp @ 2

Last change on this file since 2 was 2, checked in by guillaumeb, 15 years ago

commit initial

File size: 1.9 KB
Line 
1#include "processor.h"
2
3void Processor::driver()
4{
5    // Si il y a encore des addresses à envoyer
6    if (!file.eof()) {
7
8        // On active le composant recepteur
9        out_activate = true;
10
11        // Et que la file n'est pas pleine, alors on les envoie
12        if (!queue->is_full()) {
13
14            // Vide pour l'instant, c'est la donnée a charger
15            int data;
16           
17            // RawAddresse à charger dans le cache...
18            unsigned int address;
19
20            // Lecture de l'addresse depuis le fichier
21            file >> address;
22           
23            if (file.eof()){
24                out_activate = false;
25                return;
26            }
27
28            cout << "lecture de " << dec << address << " dans le fichier" << endl;
29
30            RawAddress *addr = new RawAddress(address);
31
32            // Si il y a encore des addresses à envoyer
33            cout << sc_time_stamp() << " Processor : request " << *addr << endl;
34
35            // on ajoute la requete a la queue
36            queue->insert(*addr);
37
38            read(*addr, &data);
39        }
40        // Si la file est pleine, il faudra attendre un cycle dans la même
41        // position
42    }
43    // Si il n'y a plus d'addresses à envoyer, on désactive la réception du
44    // coté cache l1.
45    else {
46        // FIXME normalement, c'est superflu
47        // on désactive la reception du coté du cache L1
48        out_activate = false;
49    }
50}
51
52void Processor::completed()
53{
54    if (in_activate) {
55        cout << sc_time_stamp() << " Processor : la donnée " << in_data << " est arrivée" << endl;
56        //queue->print();
57        RawAddress address = in_data;
58        queue->remove(address);
59    }
60}
61
62void Processor::read(RawAddress &address, int *value)
63{
64    // ici, if ready
65    out_data = address;
66}
67
68void Processor::write(RawAddress &address, int value)
69{
70    // ici, if ready
71    out_data = address;
72}
Note: See TracBrowser for help on using the repository browser.