Skip to content
Snippets Groups Projects
Select Git revision
  • syifan-v3-patch-69460
  • pipesim
  • v3 default protected
  • mod-inst
  • 329-merge-emulation-changes-from-navi_disasm_-branch
  • v3_v4_CodeObject_Migration
  • no-klo
  • navi_disasm_
  • 325-magic-memory-copy-may-impact-kernel-execution-time
  • 326-support-accelsim-trace
  • one-kernel
  • autotune-rdna2
  • autotune-cdna
  • akitartm-sa-high-concurrency
  • 309-reporting-cpi-stack-3
  • generic_lmf
  • autotune-gcn3
  • 309-reporting-cpi-stack
  • add_unified_GPU_test
  • navi_disasm_server_dev
  • v3.0.0-alpha.9
  • v3.0.0-alpha.8
  • v3.0.0-alpha.7
  • v3.0.0-alpha.6
  • v3.0.0-alpha.5
  • v3.0.0-alpha.4
  • v3.0.0-alpha.3
  • v3.0.0-alpha.2
  • v3.0.0-alpha.1
  • v2.0.2
  • v2.0.1
  • v2.0.0
  • v1.10.2
  • v1.10.1
  • v1.10.0
  • v1.9.0
  • v1.8.3
  • v1.8.2
  • v1.8.1
  • v1.8.0
40 results

gpu.go

gpu.go 1.54 KiB
package gcn3

import (
	"gitlab.com/akita/akita"
	"gitlab.com/akita/mgpusim/pagemigrationcontroller"
	"gitlab.com/akita/mgpusim/rdma"
	"gitlab.com/akita/mem"
	"gitlab.com/akita/mem/cache"
	"gitlab.com/akita/mem/cache/writeback"
	"gitlab.com/akita/mem/vm/addresstranslator"
	"gitlab.com/akita/mem/vm/tlb"
)

// A GPU is a wrapper that holds all the subcomponent of a GPU.
type GPU struct {
	CommandProcessor   *CommandProcessor
	RDMAEngine         *rdma.Engine
	PMC                *pagemigrationcontroller.PageMigrationController
	Dispatchers        []akita.Component
	CUs                []akita.Component
	L1VCaches          []akita.Component
	L1ICaches          []akita.Component
	L1SCaches          []akita.Component
	L2Caches           []*writeback.Cache
	L2CacheFinder      cache.LowModuleFinder
	L2TLBs             []*tlb.TLB
	L1VTLBs            []*tlb.TLB
	L1STLBs            []*tlb.TLB
	L1ITLBs            []*tlb.TLB
	L1VAddrTranslator  []*addresstranslator.AddressTranslator
	L1IAddrTranslator  []*addresstranslator.AddressTranslator
	L1SAddrTranslator  []*addresstranslator.AddressTranslator
	MemoryControllers  []akita.Component
	Storage            *mem.Storage
	InternalConnection akita.Connection

	GPUID uint64
}

func (g *GPU) ExternalPorts() []akita.Port {
	ports := []akita.Port{
		g.CommandProcessor.ToDriver,
		g.RDMAEngine.ToOutside,
		g.PMC.RemotePort,
	}

	for _, l2tlb := range g.L2TLBs {
		ports = append(ports, l2tlb.BottomPort)
	}

	return ports
}

// NewGPU returns a newly created GPU
func NewGPU(name string) *GPU {
	g := new(GPU)

	return g
}