Re: [Gems-users] Deadlock avoidance in GEMS


Date: Wed, 04 Apr 2007 11:32:53 -0400
From: Niket Agarwal <niketa@xxxxxxxxxxxxx>
Subject: Re: [Gems-users] Deadlock avoidance in GEMS
Thanks Hongxia and Greg for the replies.

Hongxia, I still want to confirm one thing.

An example L1 controller has this:-
machine(L1Cache, "MSI Directory L1 Cache CMP") {

  // NODE L1 CACHE
  // From this node's L1 cache TO the network
// a local L1 -> this L2 bank, currently ordered with directory forwarded requests MessageBuffer requestFromL1Cache, network="To", virtual_network="1", ordered="false";
  // a local L1 -> this L2 bank
MessageBuffer responseFromL1Cache, network="To", virtual_network="3", ordered="false"; MessageBuffer unblockFromL1Cache, network="To", virtual_network="4", ordered="false"; MessageBuffer messageToPrivateL2, network="To", virtual_network="0", ordered="true";


MessageBuffer messageFromPrivateL2, network="From", virtual_network="0", ordered="true"; MessageBuffer requestToL1Cache, network="From", virtual_network="2", ordered="false";
  // a L2 bank -> this L1
MessageBuffer responseToL1Cache, network="From", virtual_network="3", ordered="false";

I guess here, a virtual net is assigned to message buffers like requestFromL1Cache assigned virtual_network="1".

Now the PerfectSwitch::wakeup() is written such that it picks a message from a particular "vnet" of an incoming link and then finds the outlink and forwards the message into the same vnet of the outlink.

I hope, this is how protocol level deadlocks are avoided. Please confirm this.

One more question I have. How is it determined, which message buffers should be ordered and which ones unordered?

Thanks for your answers,
Niket.

[← Prev in Thread] Current Thread [Next in Thread→]