GPU_VIPER_Baseline.py (13400:cf74d21e948f) GPU_VIPER_Baseline.py (13731:67cd980cb20f)
1# Copyright (c) 2015 Advanced Micro Devices, Inc.
2# All rights reserved.
3#
4# For use for simulation and test purposes only
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions are met:
8#

--- 393 unchanged lines hidden (view full) ---

402
403 # For an odd number of CPUs, still create the right number of controllers
404 TCC_bits = int(math.log(options.num_tccs, 2))
405
406 # This is the base crossbar that connects the L3s, Dirs, and cpu/gpu
407 # Clusters
408 crossbar_bw = 16 * options.num_compute_units #Assuming a 2GHz clock
409 mainCluster = Cluster(intBW = crossbar_bw)
1# Copyright (c) 2015 Advanced Micro Devices, Inc.
2# All rights reserved.
3#
4# For use for simulation and test purposes only
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions are met:
8#

--- 393 unchanged lines hidden (view full) ---

402
403 # For an odd number of CPUs, still create the right number of controllers
404 TCC_bits = int(math.log(options.num_tccs, 2))
405
406 # This is the base crossbar that connects the L3s, Dirs, and cpu/gpu
407 # Clusters
408 crossbar_bw = 16 * options.num_compute_units #Assuming a 2GHz clock
409 mainCluster = Cluster(intBW = crossbar_bw)
410 for i in xrange(options.num_dirs):
410 for i in range(options.num_dirs):
411
412 dir_cntrl = DirCntrl(noTCCdir=True,TCC_select_num_bits = TCC_bits)
413 dir_cntrl.create(options, ruby_system, system)
414 dir_cntrl.number_of_TBEs = options.num_tbes
415 dir_cntrl.useL3OnWT = options.use_L3_on_WT
416 dir_cntrl.inclusiveDir = not options.nonInclusiveDir
417
418 # Connect the Directory controller to the ruby network

--- 16 unchanged lines hidden (view full) ---

435 dir_cntrl.L3triggerQueue = MessageBuffer(ordered = True)
436 dir_cntrl.responseFromMemory = MessageBuffer()
437
438 exec("system.dir_cntrl%d = dir_cntrl" % i)
439 dir_cntrl_nodes.append(dir_cntrl)
440 mainCluster.add(dir_cntrl)
441
442 cpuCluster = Cluster(extBW = crossbar_bw, intBW=crossbar_bw)
411
412 dir_cntrl = DirCntrl(noTCCdir=True,TCC_select_num_bits = TCC_bits)
413 dir_cntrl.create(options, ruby_system, system)
414 dir_cntrl.number_of_TBEs = options.num_tbes
415 dir_cntrl.useL3OnWT = options.use_L3_on_WT
416 dir_cntrl.inclusiveDir = not options.nonInclusiveDir
417
418 # Connect the Directory controller to the ruby network

--- 16 unchanged lines hidden (view full) ---

435 dir_cntrl.L3triggerQueue = MessageBuffer(ordered = True)
436 dir_cntrl.responseFromMemory = MessageBuffer()
437
438 exec("system.dir_cntrl%d = dir_cntrl" % i)
439 dir_cntrl_nodes.append(dir_cntrl)
440 mainCluster.add(dir_cntrl)
441
442 cpuCluster = Cluster(extBW = crossbar_bw, intBW=crossbar_bw)
443 for i in xrange((options.num_cpus + 1) / 2):
443 for i in range((options.num_cpus + 1) // 2):
444
445 cp_cntrl = CPCntrl()
446 cp_cntrl.create(options, ruby_system, system)
447
448 exec("system.cp_cntrl%d = cp_cntrl" % i)
449 #
450 # Add controllers and sequencers to the appropriate lists
451 #

--- 16 unchanged lines hidden (view full) ---

468 cp_cntrl.responseToCore.slave = ruby_system.network.master
469
470 cp_cntrl.mandatoryQueue = MessageBuffer()
471 cp_cntrl.triggerQueue = MessageBuffer(ordered = True)
472
473 cpuCluster.add(cp_cntrl)
474
475 gpuCluster = Cluster(extBW = crossbar_bw, intBW = crossbar_bw)
444
445 cp_cntrl = CPCntrl()
446 cp_cntrl.create(options, ruby_system, system)
447
448 exec("system.cp_cntrl%d = cp_cntrl" % i)
449 #
450 # Add controllers and sequencers to the appropriate lists
451 #

--- 16 unchanged lines hidden (view full) ---

468 cp_cntrl.responseToCore.slave = ruby_system.network.master
469
470 cp_cntrl.mandatoryQueue = MessageBuffer()
471 cp_cntrl.triggerQueue = MessageBuffer(ordered = True)
472
473 cpuCluster.add(cp_cntrl)
474
475 gpuCluster = Cluster(extBW = crossbar_bw, intBW = crossbar_bw)
476 for i in xrange(options.num_compute_units):
476 for i in range(options.num_compute_units):
477
478 tcp_cntrl = TCPCntrl(TCC_select_num_bits = TCC_bits,
479 issue_latency = 1,
480 number_of_TBEs = 2560)
481 # TBEs set to max outstanding requests
482 tcp_cntrl.create(options, ruby_system, system)
483 tcp_cntrl.WB = options.WB_L1
484 tcp_cntrl.disableL1 = options.noL1

--- 20 unchanged lines hidden (view full) ---

505
506 tcp_cntrl.responseToTCP = MessageBuffer(ordered = True)
507 tcp_cntrl.responseToTCP.slave = ruby_system.network.master
508
509 tcp_cntrl.mandatoryQueue = MessageBuffer()
510
511 gpuCluster.add(tcp_cntrl)
512
477
478 tcp_cntrl = TCPCntrl(TCC_select_num_bits = TCC_bits,
479 issue_latency = 1,
480 number_of_TBEs = 2560)
481 # TBEs set to max outstanding requests
482 tcp_cntrl.create(options, ruby_system, system)
483 tcp_cntrl.WB = options.WB_L1
484 tcp_cntrl.disableL1 = options.noL1

--- 20 unchanged lines hidden (view full) ---

505
506 tcp_cntrl.responseToTCP = MessageBuffer(ordered = True)
507 tcp_cntrl.responseToTCP.slave = ruby_system.network.master
508
509 tcp_cntrl.mandatoryQueue = MessageBuffer()
510
511 gpuCluster.add(tcp_cntrl)
512
513 for i in xrange(options.num_sqc):
513 for i in range(options.num_sqc):
514
515 sqc_cntrl = SQCCntrl(TCC_select_num_bits = TCC_bits)
516 sqc_cntrl.create(options, ruby_system, system)
517
518 exec("system.sqc_cntrl%d = sqc_cntrl" % i)
519 #
520 # Add controllers and sequencers to the appropriate lists
521 #

--- 12 unchanged lines hidden (view full) ---

534 sqc_cntrl.mandatoryQueue = MessageBuffer()
535
536 # SQC also in GPU cluster
537 gpuCluster.add(sqc_cntrl)
538
539 # Because of wire buffers, num_tccs must equal num_tccdirs
540 numa_bit = 6
541
514
515 sqc_cntrl = SQCCntrl(TCC_select_num_bits = TCC_bits)
516 sqc_cntrl.create(options, ruby_system, system)
517
518 exec("system.sqc_cntrl%d = sqc_cntrl" % i)
519 #
520 # Add controllers and sequencers to the appropriate lists
521 #

--- 12 unchanged lines hidden (view full) ---

534 sqc_cntrl.mandatoryQueue = MessageBuffer()
535
536 # SQC also in GPU cluster
537 gpuCluster.add(sqc_cntrl)
538
539 # Because of wire buffers, num_tccs must equal num_tccdirs
540 numa_bit = 6
541
542 for i in xrange(options.num_tccs):
542 for i in range(options.num_tccs):
543
544 tcc_cntrl = TCCCntrl()
545 tcc_cntrl.create(options, ruby_system, system)
546 tcc_cntrl.l2_request_latency = options.gpu_to_dir_latency
547 tcc_cntrl.l2_response_latency = options.TCC_latency
548 tcc_cntrl_nodes.append(tcc_cntrl)
549 tcc_cntrl.WB = options.WB_L2
550 tcc_cntrl.number_of_TBEs = 2560 * options.num_compute_units

--- 40 unchanged lines hidden ---
543
544 tcc_cntrl = TCCCntrl()
545 tcc_cntrl.create(options, ruby_system, system)
546 tcc_cntrl.l2_request_latency = options.gpu_to_dir_latency
547 tcc_cntrl.l2_response_latency = options.TCC_latency
548 tcc_cntrl_nodes.append(tcc_cntrl)
549 tcc_cntrl.WB = options.WB_L2
550 tcc_cntrl.number_of_TBEs = 2560 * options.num_compute_units

--- 40 unchanged lines hidden ---