FC_Switch

Parent Previous Next

Block Name: FC_Switch
Code Location: VisualSim/actor/arch/Buses/FibreChannel/FC_Switch

Table of Content
Description
Flow Diagram
Flow Control
Datastructure Fields
Block Dependency
Examples
Parameters

Description

The purpose of switch block is to support fragmentation, assembly and quick data movement. (Note: If you are looking Fibre Channel Switch having more than 16 Ports, then please use "FC_Switch_96_Nodes" block. This block supports 96 N_Port connections to a single Switch)

Fibre Channel Switch will Fragment the incoming frame to the fragment size and forward it to ingress buffer. Each fragment is acknowledged by the Ingress Buffer before the next fragment is sent out. The Fibre Channel Switch can support up to 16 connections. There is a unique fragmenter block per port. Ingress buffer has a dedicated queue for each connections and forwards transactions from respective queue to Egress buffer based on the flow control. Class1 messages will be sent out as soon as the egress buffer is available, however class2 and class3 implements buffer-to-buffer flow control. Each port will have a dedicated counter that monitors the number of transactions sent. This counter is used to test for available buffer space in the Egress Buffer. For every transaction sent, counter will be incremented by one. For class 2 and Class 3, ingress buffer will wait for an acknowledgement from the egress buffer. On receiving the Acknowledgement counter will be decremented by one for the corresponding port.
Crossbar switch has 16*16 dedicated channels to make sure that there are no collisions. The Crossbar has a delay associated with it.  The delay is based on the fragment size and Switch_Speed_MHz.
Egress Buffer acknowledges every fragment sent from ingress buffer. Once all fragments are received at the Egress port, the fragments will be assembled into the original transaction. Egress receives the Ack from the Ingress of the next switch or the Destination N_Port.  Once it receives Ack from next switch or destination N_Port, it transmits the next transaction


Flow Diagram




Flow Control

Flow control is dependent upon the service classes. Class 1 Frames use end-to-end flow control, class 3 uses only buffer-to-buffer, class 2 Frames use both types of flow control. Flow Control is managed by the Source and Destination ports using credit counters.  

Class 1 is a service which provides dedicated connections, in effect providing the equivalent of a dedicated physical connection.
Class 2 is a Frame-switched, connectionless service that allows bandwidth to be shared by multiplexing Frames from multiple sources onto the same channel or channels.
Class 3 service is identical to Class 2, except that the Frame delivery is not confirmed. (Flow control is managed only on buffer level)

 
Data Structure Fields

FC_Switch requires few mandatory fields included in the A_Source, A_Destination, A_Command ("Read"/"Write"), A_Message (initialized with Class1, Class2 or Class3), A_Bytes, A_Bytes_Remaining, A_Bytes_Sent are the required fields.

Example:
input.A_Source                     = "Device_1"
input.A_Destination             = "Device_9"
input.A_Command                = "Write" /*"Write"*/
input.A_Message                   = "Class1" /*"Class2" or "Class3" */
input.A_Response                 = "false"
input.A_Bytes                         = 15000 /* Bytes */
input.A_Bytes_Sent                = 2112
input.A_Bytes_Remaining     = 12888

A_Sourcce field represents the name of Source device, A_Destination field represents Destination device name, A_Command is to identify whether the transaction is a Read/Write transfer. A_Message helps one to set type of service, please note that the Field values can be either "Class1", "Class2" or "Class3". Purpose of A_Response field is to indentify if a transaction is a response from Destination device or a transaction from Source device. A_Bytes field has total size of the packet, A_Bytes_Sent field get updated with Fragment Size plus Overhead Bytes in Fibre Channel Switch. A_Bytes_Remaining has the details about remaining fragment size waiting for transmission.
 


Block Dependency

FC_Switch block requires FC_N_Node, FC_Link, DeviceInterface (optional), FC_Config blocks instantiated in the model.

Examples
1. FC with Single Switch
2. FC with Two Switches
2. FC with Multi Switch

Parameters

Name

Type

Description

Switch_Name

String
Ex: “FC_Fabric_1”

Name of Fibre Channel Switch 

Ingress_Buffer_Size

Integer
Ex: 512

Size of Ingress Buffer at Each Port

Egress_Buffer_Size

Integer
Ex: 512

Size of Egress Buffer at Each Port

Architecture_Name

String
Ex: "Architecture_1"

Name of Arch_Setup

Switch_Speed_MHz

Double
Ex: 800

Speed of Crossbar switch

Fragment_Size

Integer
2112

Size of Frame Fragment

Overhead_Bytes

Integer
Ex: 30

Overhead Bytes

Enable_Debug

Boolean
Ex: true

Enable or Disable Debug Message   

Switch_ID

Integer
Ex: 1

Unique Identifier for Switch


Created with the Personal Edition of HelpNDoc: Produce electronic books easily