⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaults.tcl

📁 一个用在mips体系结构中的操作系统
💻 TCL
字号:
## Copyright (C) 1996-1998 by the Board of Trustees#    of Leland Stanford Junior University.# # This file is part of the SimOS distribution. # See LICENSE file for terms of the license. ##########################################################################                                                                      ## Default parameter values for SimOS. This file should be sourced at   ## the start of your init.simos file and then you can change any of the ## values below that source. Note that a few of the parameters are only ## set if you are not restoring a checkpoint. These parameters are      ## saved in the checkpoint and can not be changed.                      ##                                                                      ########################################################################### MACHINES:#    if {!$SIMOS(RestoringCpt)} {    # Number of machines to simulate        set PARAM(MACHINE.Count)    1    }## CPU:#   #   You can dynamically switch between CPU simulators. The model#   determines which one you start in.#    if {!$SIMOS(RestoringCpt)} {        # Number of processors to simulate        set PARAM(CPU.Count)   1    }if {$SIMOS(ISA)=="MIPS" || $SIMOS(ISA)=="MIPS32"} {     # Which instruction set architecture... currently only MIPS    set PARAM(CPU.ISA)            "MIPS"        if {$SIMOS(ISA)== "MIPS"} {        set PARAM(TLB.Org)        R10000    } else {        set PARAM(TLB.Org)        R4000     }    # Which cpu simulator to start in. (EMBRA_PAGE, EMBRA_CACHE, MIPSY)    if {$SIMOS(EmbraPresent)} {       set PARAM(CPU.Model)          EMBRA_PAGE    } else {       set PARAM(CPU.Model)          MIPSY    }}if {$SIMOS(ISA)=="ALPHA"} {     set PARAM(CPU.ISA)   "ALPHA"    set PARAM(CPU.Model) "GAMMA"    set PARAM(CPU.Delta.TimeQuantum) 1024    #bogus:    set PARAM(TLB.Org)            R4000}if {$SIMOS(ISA)=="X86"} {     set PARAM(CPU.ISA)   "X86"    set PARAM(CPU.Model) "X86SIM"    #bogus:    set PARAM(TLB.Org)            R4000}    # Clock speed in MHz.     set PARAM(CPU.Clock)          200  #  # Mipsy/MXS specifics  #   console "Current ISA is $SIMOS(ISA) \n"    if {$SIMOS(ISA) == "MIPS" || $SIMOS(ISA)=="MIPS32"} {       set PARAM(CPU.Mipsy.MipsySampleCycles)     0xffffffff      set PARAM(CPU.Mipsy.MXSSampleCycles)       0    }  #   # Embra specifics    #  if {$SIMOS(EmbraPresent)} {     set PARAM(CPU.Embra.MPinUP)               yes    set PARAM(CPU.EmbraPage.UseETLB)          yes    set PARAM(CPU.EmbraCache.UseVQC)          yes      set PARAM(CPU.Embra.DisableStat)          yes    set PARAM(CPU.Embra.InlineQC)             yes    set PARAM(CPU.Embra.TimeQuantum)         1024    set PARAM(CPU.Embra.MiscCheckInterval)  50000    set PARAM(CPU.Embra.PeriodAnnInterval)  [expr 32 * 1024 * 1024]    set PARAM(CPU.Embra.StatInterval)       [expr 32 * 1024 * 1024]    set PARAM(CPU.Embra.SeparateMMUs)         no  }## CACHE:# #   We have two types of caches now:# #   None - don't use caches##   2Level - this consists of separate level 1 instruction and data #   caches and a unified level 2 cache. Additionally, there is a #   configurable write buffer.  #     set PARAM(CACHE.Model)      2Level  #   # 2Level specifics  #    # Size (in kilobytes) of the 1st level instruction cache    set PARAM(CACHE.2Level.ISize)   32    # Size (in bytes) of a 1st level instruction cache line    set PARAM(CACHE.2Level.ILine)   64    # Associativity of 1st level instruction cache    set PARAM(CACHE.2Level.IAssoc)   2     # icache inclusion   if { $SIMOS(ISA)=="ALPHA"} {       set PARAM(CACHE.2Level.IInclusion) no    } else {      set PARAM(CACHE.2Level.IInclusion) yes    }    # Size (in kilobytes) of the 1st level data cache    set PARAM(CACHE.2Level.DSize)   32        # Size (in bytes) of a 1st level data cache line    set PARAM(CACHE.2Level.DLine)   64    # Associativity of 1st level data cache    set PARAM(CACHE.2Level.DAssoc)   2    # Size (in kilobytes) of the 2nd level unified cache    set PARAM(CACHE.2Level.L2Size)  1024    # Size (in bytes) of a 2nd level cache line    set PARAM(CACHE.2Level.L2Line)   128    # Associativity of 2nd level unified cache    set PARAM(CACHE.2Level.L2Assoc)     2    # Time (in nanoseconds) for a 2nd level cache hit    set PARAM(CACHE.2Level.L2HitTime)        50    # The write buffer allows non-blocking writes. 0 turns off the buffer.    set PARAM(CACHE.2Level.WriteBufferSize) 0    #     set PARAM(CACHE.2Level.UpgradesOnUP)    0    # Time (in *cycles*) before a NAKed memory request is retried    set PARAM(CACHE.2Level.NAKRetryTime)    1## CONSOLE:# #     if {!$SIMOS(RestoringCpt)} {        # Number of consoles        set PARAM(CONSOLE.Count)  1    }        set PARAM(CONSOLE.Port)            3456    set PARAM(CONSOLE.SlaveTimeOut)     600## DISK:# #   We currently support two disk models#   * HP - an accurate model of the HP 97560 disk drive#   * Fixed - all disk accesses incur a fixed latency### NOTE:## The following parameters are NOT set here in Tcl, since we need# to know some system limits (max number of CPUs and max number of# disk unit registers / node) in order to set them. The parameters# are given default values in params.c. The following comments are# included just for documentation purposes.##       set PARAM(DISK.NumControllers.<node>) 1#	set PARAM(DISK.NumUnitsPerController) 128if {$SIMOS(ISA)=="ALPHA"} {     set PARAM(DISK.Model) Fixed} else  {     set PARAM(DISK.Model) HP}  #  # HP-disk specifics  #    # All aspects of the HP disk can be sped up. This value is the    # percentage of the original model that latencies should measure.    set PARAM(DISK.HP.Scaling)    100      #   # Fixed-disk specifics     # All disk accesses take this many milliseconds    set PARAM(DISK.Fixed.Latency)    6# # ETHERNET:# #   We only have one model of ethernet right now.#     if {!$SIMOS(RestoringCpt)} {        # Number of ethernet controllers        set PARAM(ETHERNET.Count)  1    }    set PARAM(ETHERNET.Model)                  EtherSim     # Hardware ethernet address. Be sure to have a different address    # when two simulations are running.     set PARAM(ETHERNET.EtherSim.Address)   8:1:2:3:4:60    # The machine that is running ethersim    set PARAM(ETHERNET.EtherSim.Hostname)     localhost     # The port to which ethersim will communicate    set PARAM(ETHERNET.EtherSim.Port)              3232    # For determinism you will need to make ethernet inactive. A randomly    # arriving packet can skew the run.    set PARAM(ETHERNET.EtherSim.Active)              no      ## MEMORY SYSTEM:# #   Models include:#   * BusUma     - uniform memory access time with bus contention,#                  snoopy caches, writeback buffers, and an #                  out-of-order split transaction bus.#   * Numa       - Similar to BusUma, but with latencies dependent on#                  where memory is found.#   * Perfect    - Models a zero access time memory system#   * Flashlite  - Cycle accurate model of the FLASH memory system#    if {!$SIMOS(RestoringCpt)} {        # Memory size in megabytes        set PARAM(MEMSYS.MemSize)  32    }    set PARAM(MEMSYS.Model)              BusUma # # Perfect paameters #    # The latency (in ns) of a memory request (currently must be zero)    set PARAM(MEMSYS.Perfect.Latency)         0 # # BusUma parameters #    # The maximum bandwith (in MB/s) that the bus can support    set PARAM(MEMSYS.BusUma.BusBW)         1200    # Total time (in ns) to fetch a cache line from memory in an unloaded system    set PARAM(MEMSYS.BusUma.MemCycleTime)   500    # The time (in ns) to get data out of another CPU's cache if it is dirty there.    # Overall time for a dirty miss will be (MemCycleTime + DirtyPenalty)     # in an unloaded system.       set PARAM(MEMSYS.BusUma.DirtyPenalty)   250    # Total time (in ns) to issue an upgrade in an unloaded system.    set PARAM(MEMSYS.BusUma.UpgradeTime)    400    # The number of memory units (banks).  Different memories can be servicing    # requests simultaneously if the requested data is in different memory units.    set PARAM(MEMSYS.BusUma.NumMemories)      1############    #    # Numa parameters    #    # The number of memories/directory controllers in the system. The    # value should lie in the range of 1 to "NUM_CPUS". 1 would be     # like a bus-based system. "NUM_CPUS" would be a CPU per    # controller (e.g. FLASH) and anything in between would have    # clusters of CPUs per controller (e.g. DASH).     set PARAM(MEMSYS.Numa.NumMemories)        1     # The latency (in ns) for the bus operation from a processor to    # its local directory controller.    set PARAM(MEMSYS.Numa.BusTime)           75    # The time (in ns) it takes the directory controller to do specific    # operations.    # PILocalDCTime = occupancy of dc on local miss    set PARAM(MEMSYS.Numa.PILocalDCTime)     100    # PIRemoteDCTime = occupancy of local dc on outgoing remote miss    set PARAM(MEMSYS.Numa.PIRemoteDCTime)    25    # NILocalDCTime = occupancy of remote dc on remote miss    set PARAM(MEMSYS.Numa.NILocalDCTime)     350    # NIRemoteDCTime = occupancy of local dc on incoming remote miss    set PARAM(MEMSYS.Numa.NIRemoteDCTime)    25    # Latency (in ns) for the directory controller to fetch a cache    # line from local memory.    set PARAM(MEMSYS.Numa.MemTime)           50    # Fixed latency (in ns) for going between directory controllers,    # across the network.     set PARAM(MEMSYS.Numa.NetTime)          150    # Granularity (in pages) of striping physical pages across    # directory controllers. For example, if this is set to 1, memory    # pages are distributed roundrobin across the cotrollers. The      # default (-1) is stripe size of    # PARAM(MEMSYS.MemSize)/PARAM(MEMSYS.Numa.NumMemories)/PAGE_SIZE.     set PARAM(MEMSYS.Numa.StripeSize)       -1## DEBUG:#    set PARAM(DEBUG.Port)              2345    set PARAM(DEBUG.LoopOnError)       yes# # FILES:# #   Where to find and place simulator related files. You will need#   plenty of disk space for taking checkpoints. #    # When you take a checkpoint, all of the files will end up here.     set PARAM(FILES.CptDir)           .    # The checkpoint files will be named CPT.xxx.count where this is xxx    set PARAM(FILES.CptTag)           "NOTAG"    # Turns compression on for the checkpoint memory file    set PARAM(FILES.CptCompress)    yes    # Location from which the     set PARAM(FILES.MemFileDir)       .        # SimOS looks here for DISKn when mounting under SimOS    set PARAM(FILES.DevFileDir)       .       # If this is set, cpu log files will be saved as cpu.log.<number>    set PARAM(FILES.SaveOldCPULogs) yes    #     set PARAM(FILES.FPROMFile)       ""## VISUAL:#    # The port to which the SimOS visual interface should connect    set PARAM(VISUAL.Port)           1865    # Period in cycles in which SimOS checks the visual interface    set PARAM(VISUAL.SamplePeriod)   5000000## CLOCK:#if {!$SIMOS(RestoringCpt)} {    # Number of clocks    set PARAM(CLOCK.Count)  1}if {$SIMOS(ISA) == "ALPHA"} {    set PARAM(CPU.IntrClockFrequency) 1200} else {    ### ignored for now    set PARAM(CPU.IntrClockFrequency) 100}## HIVE:#    if {!$SIMOS(RestoringCpt)} {    # This sort of belongs in NVRAM... how many cells to boot hive with        set PARAM(HIVE.NumCells)            1    }## FPROM## Firmware PROM and firmware RAMif {$SIMOS(ISA) == "MIPS" || $SIMOS(ISA)=="MIPS32"} {     # The size of FPROM in bytes    set PARAM(FPROM.PROMSize)          16384    # The size of FRAM in bytes    set PARAM(FPROM.RAMSize)           32768    # Whether to let flashlite handle requests to fprom/fram alias zones    set PARAM(FPROM.UseFL)             0## MAGIC:##      set PARAM(MAGIC.SIPSLatency)      1500    set PARAM(MAGIC.IPILatency)       1000    # Initial value of the time of day clock (secs since 00:00:00 UTC, 1/1/70)    # Zero means retrive value using gettimeofday() system call.     set PARAM(MAGIC.InitialTime)      0}## STATS:#    set PARAM(STATS.FalseSharing)       no## CLUSTER:# # These parameters deal with connecting multiple SimOS's together# for network-based applications. This currently is not supported.#    set PARAM(CLUSTER.File)             ""#    set PARAM(CLUSTER.Interval)      40000  #    set PARAM(CLUSTER.NumSimul)          0#    set PARAM(CLUSTER.Latency)         100#    set PARAM(CLUSTER.Barrier)         yes ## These only exist when VCS_FAKE is defined# #   set PARAM(MISC.VCSFake)#   set PARAM(MISC.VCSFake.FileName)# migration replication variablesif {$SIMOS(ISA) != "ALPHA" && $SIMOS(ISA)!="X86" } { set PARAM(MIGREP.Enable) Noset PARAM(MIGREP.Trigger) 12set PARAM(MIGREP.Reset) 100set PARAM(MIGREP.MaxKern) 2400set PARAM(MIGREP.SampleCount) 10set PARAM(MIGREP.IntrCount) 2set PARAM(MIGREP.IntrHot) Yesset PARAM(MIGREP.ZeroOnWrite) Yesset PARAM(MIGREP.4BitCounters) No}### ### ALPHA parameters###if {$SIMOS(ISA) == "ALPHA"} {     set PARAM(ALPHA.BootNT) No    set PARAM(ALPHA.Files.PALCode)  "./osfpal"    set PARAM(ALPHA.Files.Console)  "./console"    set PARAM(ALPHA.Files.Kernel)   "./vmunix"    set PARAM(ALPHA.Files.NT_Firmware) "./arc_fw.exe"    set PARAM(ALPHA.Files.NT_OSLoader) "./osloader.exe"      # number of instructions fetched, issued, etc., per cycle    set PARAM(CPU.Epsilon.Width) 1    # whether to fetch/issue/retire on successive cycles or all in one cycle    # If Width > 1, then Pipelined must be 1    set PARAM(CPU.Epsilon.Pipelined) 0    # Whether to allow speculation down exception path    set PARAM(CPU.Epsilon.NewTrapStates) 0    # this must be 1, or interrupts don't get delivered in Epsilon    set PARAM(CPU.Epsilon.Trap.TrapNotifyInterrupts) 1    # 0 => to inject exception PC after most recently fetched instruction    # 1 => to inject exception PC after most recently committed instruction    set PARAM(CPU.Epsilon.Interrupt.TrapUncommitted) 1    # whether to allow interrupt PC to be injected during PRIV_OP_REI or to defer    set PARAM(CPU.Epsilon.Interrupt.AtRei) 1    # set to unlikely memory address to reduce debugging messages    set PARAM(CPU.Alpha.Debug.VATranslation) 0xfffffffffffffff0} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -