wiki:fr-Instance_configuration_file

Version 1 (modified by kane, 16 years ago) (diff)

--

Fichier de Configuration de l'Instance

Afin de générer une instance, le générateur à besoin des directives de l'utilisateur. C'est l'objectif du fichier de configurations de l'Instance

<?xml version="1.0" encoding="ISO-8859-1" ?>

<cpu name="nom_instance" >

  <!-- ****************************
       * Définition du processeur *
       **************************** -->

  <core size_data="..." > <!-- 1 -->

    <cache_unit> <!-- 1 -->

      <icache id="..." 
              arbiter="..." 
              nb_port="..." /> <!-- 1+ -->

      <dcache id="..." 
              arbiter="..." 
              nb_port="..." /> <!-- 1+ -->

    </cache_unit>

    <front_end id="..." 
               link_icache="..."
               link_out_of_order_engine="..."> <!-- 1+ -->

      <fetch_unit> <!-- 1 -->

        <ifetch id="..." 
                nb_inst="..." 
                size_queue="..."
                link_decod="..." /> <!-- 1+ -->

      </fetch_unit>

      <prediction_unit arbiter="..."
                       nb_prediction="..."
                       nb_branch_complete="..." > <!-- 1 -->

        <branch_target_buffer size_queue="..."
                              associativity="..." /> <!-- 1 -->

        <return_address_stack size_queue="..." /> <!-- 1 -->

        <branch_context       size_queue="..." /> <!-- 1 -->

        <meta_predictor       have_meta_predictor="..."
                              predictor_0_have_bht="..."
                              predictor_0_bht_size_shifter="..."
                              predictor_0_bht_nb_shifter="..."
                              predictor_0_have_pht="..."
                              predictor_0_pht_size_counter="..."
                              predictor_0_pht_nb_counter="..."
                              predictor_0_pht_size_address_share="..."
                              predictor_1_have_bht="..."
                              predictor_1_bht_size_shifter="..."
                              predictor_1_bht_nb_shifter="..."
                              predictor_1_have_pht="..."
                              predictor_1_pht_size_counter="..."
                              predictor_1_pht_nb_counter="..."
                              predictor_1_pht_size_address_share="..."
                              predictor_2_have_bht="..."
                              predictor_2_bht_size_shifter="..."
                              predictor_2_bht_nb_shifter="..."
                              predictor_2_have_pht="..."
                              predictor_2_pht_size_counter="..."
                              predictor_2_pht_nb_counter="..."
                              predictor_2_pht_size_address_share="..." /> <!-- 1 -->
      </prediction_unit>

      <decod_unit> <!-- 1 -->

        <decod id="..."
               arbiter="..."
               nb_branch_decod="..."
               nb_inst="..."
               size_queue="..."
               link_rename="..." /> <!-- 1+ -->

      </decod_unit>

    </front_end>

    <out_of_order_engine id="..."
                         link_execution_loop="..."> <!-- 1+ -->

      <rename arbiter="..."
              nb_inst="..."
              size_queue="..."
              size_windows="..."
              nb_gpr_physical="..."
              nb_gpr_free="..."
              nb_spr_physical="..."
              nb_spr_free="..." /> <!-- 1+ -->

      <commit arbiter="..."
              nb_inst="..."
              size_queue="..."
              size_windows="..."
              commit_out_of_order_thread="..." /> <!-- 1 -->

    </out_of_order_engine>

    <execution_loop id="..."
                    link_dcache="..." > <!-- 1+ -->

      <read_unit> <!-- 1 -->

        <reservation_station id="..."
                             size_queue="..."
                             one_queue="..." > <!-- 1+ -->

          <link id="..."> <!-- 1+ -->

        </reservation_station>

      </read_unit>

      <memory_unit size_queue="..."
                   one_queue="..." 
                   nb_inst="..."
                   size_windows="..."
                   bypass_memory_out="..."
                   keep_data="..."
                   speculated_memory_read="..." > <!-- 1 -->

          <link id="..."> <!-- 1+ -->

      </memory_unit>

      <execution_unit> <!-- 1 -->

        <execution id="..." 
                   type_mul="..."
                   type_div="..."
                   type_ext="..."
                   type_ff1="..."
                   type_fl1="..." /> <!-- 1+ -->

      </execution_unit>

      <write_unit> <!-- 1 -->

        <writeback id="..."
                   size_queue="..."
                   one_queue="..."
                   bypass_execute_gpr="..."
                   bypass_execute_spr="..."
                   bypass_memory_in="..." > <!-- 1+ -->

          <link id="..."> <!-- 1+ -->

        </writeback>

      </write_unit>
      
    </execution_loop>

  </core>

</cpu>

Un petit exemple :

<?xml version="1.0" encoding="ISO-8859-1" ?>

<cpu name="nom_instance" >

  <core size_data="32" >

    <cache_unit>
      <icache id="0"  arbiter="0" nb_port="1" />
      <dcache id="0"  arbiter="0" nb_port="1" />
    </cache_unit>

    <front_end id="0" link_icache="0" link_out_of_order_engine="0">
      <fetch_unit>
        <ifetch id="0" nb_inst="1" size_queue="4" link_decod="0" />
        <ifetch id="1" nb_inst="1" size_queue="4" link_decod="0" />
      </fetch_unit>

      <prediction_unit arbiter="0" nb_prediction="1" nb_branch_complete="1" >
        <branch_target_buffer size_queue="32" associativity="4" />
        <return_address_stack size_queue="8" />
        <branch_context       size_queue="8" />
        <meta_predictor       have_meta_predictor="1"
                              predictor_0_have_bht="1"
                              predictor_0_bht_size_shifter="10"
                              predictor_0_bht_nb_shifter="16"
                              predictor_0_have_pht="0"
                              predictor_1_have_bht="0"
                              predictor_1_have_pht="1"
                              predictor_1_pht_size_counter="2"
                              predictor_1_pht_nb_counter="64"
                              predictor_1_pht_size_address_share="3"
                              predictor_2_have_bht="1"
                              predictor_2_bht_size_shifter="4"
                              predictor_2_bht_nb_shifter="32"
                              predictor_2_have_pht="1"
                              predictor_2_pht_size_counter="2"
                              predictor_2_pht_nb_counter="32"
                              predictor_2_pht_size_address_share="4" />
      </prediction_unit>

      <decod_unit>
        <decod id="0" arbiter="0" nb_branch_decod="1" nb_inst="1" size_queue="4" link_rename="0" />
      </decod_unit>

    </front_end>

    <out_of_order_engine id="0" link_execution_loop="0"> <!-- 1+ -->

      <rename arbiter="1"
              nb_inst="1"
              size_queue="8"
              size_windows="3"
              nb_gpr_physical="64"
              nb_gpr_free="2"
              nb_spr_physical="16"
              nb_spr_free="1" />

      <commit arbiter="0"
              nb_inst="1"
              size_queue="32"
              size_windows="2"
              commit_out_of_order_thread="1" />

    </out_of_order_engine>

    <execution_loop id="0">

      <read_unit>
        <reservation_station id="0" size_queue="4" one_queue="1" >
          <link id="0">
        </reservation_station>
      </read_unit>

      <memory_unit size_queue="8"
                   one_queue="1" 
                   nb_inst="1"
                   size_windows="2"
                   bypass_memory_out="1"
                   keep_data="1"
                   speculated_memory_read="1" >
          <link id="0">
      </memory_unit>

      <execution_unit>
        <execution id="0" 
                   type_mul="1"
                   type_div="0"
                   type_ext="0"
                   type_ff1="1"
                   type_fl1="1" />
      </execution_unit>

      <write_unit>
        <writeback id="0"
                   size_queue="4"
                   one_queue="1"
                   bypass_execute_gpr="1"
                   bypass_execute_spr="1"
                   bypass_memory_in="0" >
          <link id="0">
        </writeback>
      </write_unit>
      
    </execution_loop>
  </core>
</cpu>