source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp @ 78

Last change on this file since 78 was 78, checked in by rosiere, 16 years ago

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 1.5 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18namespace free_list_unit {
19
20
21#undef  FUNCTION
22#define FUNCTION "Free_List_unit::genMealy_push_spr"
23  void Free_List_unit::genMealy_push_spr (void)
24  {
25    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
26
27    bool bank_use [_param->_nb_bank];
28    for (uint32_t i=0; i<_param->_nb_bank; i++)
29      bank_use [i] = false;
30
31    for (uint32_t i=0; i<_param->_nb_push; i++)
32      {
33        bool spr_ack = not PORT_READ(in_PUSH_SPR_VAL[i]);
34
35        if (not spr_ack)
36          {
37            // num_bank : MSB
38            uint32_t bank = PORT_READ(in_PUSH_SPR_NUM_REG[i]) >> _param->_bank_spr_size_slot;
39           
40            if (not bank_use [bank])
41              {
42                // find
43                spr_ack = true;
44                internal_PUSH_SPR_BANK [i] = bank;
45                bank_use [bank] = true;
46              }
47          }
48
49        internal_PUSH_SPR_ACK [i] = spr_ack;
50        PORT_WRITE(out_PUSH_SPR_ACK [i], internal_PUSH_SPR_ACK [i]);
51      }
52   
53    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
54  };
55
56}; // end namespace free_list_unit
57}; // end namespace register_translation_unit
58}; // end namespace rename_unit
59}; // end namespace ooo_engine
60}; // end namespace multi_ooo_engine
61}; // end namespace core
62
63}; // end namespace behavioural
64}; // end namespace morpheo             
65#endif
Note: See TracBrowser for help on using the repository browser.