예제 #1
0
        public InternalReadRequestLinkedList WaitingFlashTransfersForEmergencyGC = new InternalReadRequestLinkedList();  //The read request related to emergency GC are scheduled in this list


        /// <summary>
        /// Stores channel management information.
        /// </summary>
        /// <param name="flashChips"></param>
        /// <param name="waitingInternalWriteReqs">If allocation scheme is F, then this variable is
        /// shared among all channels, otherwise, each channel has a private version of this variable.</param>
        /// <param name="rowID"></param>
        public BusChannelSprinkler(uint channelID, FlashChip[] flashChips, InternalReadRequestLinkedList waitingInternalReadReqs,
                                   InternalWriteRequestLinkedList waitingInternalWriteReqs, InternalWriteRequestLinkedList waitingCopybackRequests) : base(channelID, flashChips)
        {
            WaitingInternalReadReqs  = waitingInternalReadReqs;
            WaitingInternalWriteReqs = waitingInternalWriteReqs;
            WaitingCopybackRequests  = waitingCopybackRequests;
        }
예제 #2
0
 public RateControlOutputQueue(int priorityClassCount, uint chipCount, uint dieNoPerChip, uint planeNoPerDie)
 {
     ReadQueues  = new InternalReadRequestLinkedList[priorityClassCount];
     WriteQueues = new InternalWriteRequestLinkedList[priorityClassCount];
     for (int i = 0; i < priorityClassCount; i++)
     {
         ReadQueues[i]  = new InternalReadRequestLinkedList();
         WriteQueues[i] = new InternalWriteRequestLinkedList();
     }
     GCReadQueueForPlanes  = new InternalReadRequestLinkedList[chipCount][][];
     GCWriteQueueForPlanes = new InternalWriteRequestLinkedList[chipCount][][];
     GCEraseQueueForPlanes = new InternalCleanRequestLinkedList[chipCount][][];
     for (int chipCntr = 0; chipCntr < chipCount; chipCntr++)
     {
         GCReadQueueForPlanes[chipCntr]  = new InternalReadRequestLinkedList[dieNoPerChip][];
         GCWriteQueueForPlanes[chipCntr] = new InternalWriteRequestLinkedList[dieNoPerChip][];
         GCEraseQueueForPlanes[chipCntr] = new InternalCleanRequestLinkedList[dieNoPerChip][];
         for (int dieCntr = 0; dieCntr < dieNoPerChip; dieCntr++)
         {
             GCReadQueueForPlanes[chipCntr][dieCntr]  = new InternalReadRequestLinkedList[planeNoPerDie];
             GCWriteQueueForPlanes[chipCntr][dieCntr] = new InternalWriteRequestLinkedList[planeNoPerDie];
             GCEraseQueueForPlanes[chipCntr][dieCntr] = new InternalCleanRequestLinkedList[planeNoPerDie];
             for (int planeCntr = 0; planeCntr < planeNoPerDie; planeCntr++)
             {
                 GCReadQueueForPlanes[chipCntr][dieCntr][planeCntr]  = new InternalReadRequestLinkedList();
                 GCWriteQueueForPlanes[chipCntr][dieCntr][planeCntr] = new InternalWriteRequestLinkedList();
                 GCEraseQueueForPlanes[chipCntr][dieCntr][planeCntr] = new InternalCleanRequestLinkedList();
             }
         }
     }
     GCPriorityClasses = new LinkedList <IntegerPageAddress> [InputStreamBase.PriorityClassCount];
     for (int i = 0; i < InputStreamBase.PriorityClassCount; i++)
     {
         GCPriorityClasses[i] = new LinkedList <IntegerPageAddress>();
     }
 }
예제 #3
0
 public ExecutionBatch()
 {
     ReadBatch  = new InternalReadRequestLinkedList();
     WriteBatch = new InternalWriteRequestLinkedList();
     EraseBatch = new InternalCleanRequestLinkedList();
 }