text: it should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below , the disclosed systems and / or methods may be implemented using any number of techniques , whether currently known or in existence . the disclosure should in no way be limited to the illustrative implementations , drawings , and techniques illustrated below , including the exemplary designs and implementations illustrated and described herein , but may be modified within the scope of the appended claims along with their full scope of equivalents . disclosed herein is a system and method for a distributed wa for a plurality of nes along a path that communicates wavelength availability information between the nes . specifically , wavelength availability information may be created at a first node along the path and forwarded to the next ne in the path . the next ne may update the wavelength availability information using its local wavelength availability information and forward the updated wavelength information to the next ne along the path . this process is repeated at each ne until there are no available wavelengths or the ne is the last ne in the path . the last ne in the path may use the wavelength availability information and a wavelength selection approach to reserve a wavelength along the path . the reserved wavelength may be communicated back to the nes along the path so that their wavelength availability information can be updated . fig1 illustrates one embodiment of a wson system 100 . the system 100 may comprise a wson 110 , a control plane controller 120 , and a pce 130 . the wson 110 , control plane controller 120 , and pce 130 may communicate with each other via optical , electrical , or wireless means . the wson 110 may comprise a plurality of nes 112 coupled to one another using optical fibers . in an embodiment , the optical fibers may also be considered nes 112 . the optical signals may be transported through the wson 110 over lightpaths that may pass through some of the nes 112 . in addition , some of the nes 112 , for example those at the ends of the wson 110 , may be configured to convert between electrical signals from external sources and the optical signals used in the wson 110 . although four nes 112 are shown in the wson 110 , the wson 110 may comprise any number of nes 112 . the wson 110 may be any optical network that uses active or passive components to transport optical signals . the wson 110 may implement wdm to transport the optical signals through the wson 110 , and may comprise various optical components as described in detail below . the wson 110 may be part of a long haul network , a metropolitan network , or a residential access network . the nes 112 , also referred to as nodes , may be any devices or components that transport signals through the wson 110 . in an embodiment , the nes 112 consist essentially of optical processing components , such as line ports , add ports , drop ports , transmitters , receivers , amplifiers , optical taps , and so forth , and do not contain any electrical processing components . alternatively , the nes 112 may comprise a combination of optical processing components and electrical processing components . at least some of the nes 112 may be configured with wavelength converters , optical - electrical ( oe ) converters , electrical - optical ( eo ) converters , oeo converters , or combinations thereof . however , it may be advantageous for at least some of the nes 112 to lack such converters as such may reduce the cost and complexity of the wson 110 . in specific embodiments , the nes 112 may comprise optical cross connects ( oxcs ), photonic cross connects ( pxcs ), type i or type ii reconfigurable optical add / drop multiplexers ( roadms ), wavelength selective switches ( wsss ), fixed optical add / drop multiplexers ( foadms ), or combinations thereof . the nes 112 may be coupled to each other via optical fibers , also referred to as links . the optical fibers may be used to establish optical links and transport the optical signals between the nes 112 . the optical fibers may comprise standard single mode fibers ( smfs ) as defined in itu - t standard g . 652 , dispersion shifted smfs as defined in itu - t standard g . 653 , cut - off shifted smfs as defined in itu - t standard g . 654 , non - zero dispersion shifted smfs as defined in itu - t standard g . 655 , wideband non - zero dispersion shifted smfs as defined in itu - t standard g . 656 , or combinations thereof . these fiber types may be differentiated by their optical impairment characteristics , such as attenuation , chromatic dispersion , polarization mode dispersion , four wave mixing , or combinations thereof . these effects may be dependent upon wavelength , channel spacing , input power level , or combinations thereof . the optical fibers may be used to transport wdm signals , such as course wdm ( cwdm ) signals as defined in itu - t g . 694 . 2 or dense wdm ( dwdm ) signals as defined in itu - t g . 694 . 1 . all of the standards described herein are incorporated herein by reference . the control plane controller 120 may coordinate activities within the wson 110 . specifically , the control plane controller 120 may receive optical connection requests and provide lightpath signaling to the wson 110 via an interior gateway protocol ( igp ) such as generalized multi - protocol label switching ( gmpls ), thereby coordinating the nes 112 such that data signals are routed through the wson 110 with little or no contention . in addition , the control plane controller 120 may communicate with the pce 130 using pce protocol ( pcep ), provide the pce 130 with information that may be used for the rwa , receive the rwa from the pce 130 , and / or forward the rwa to the nes 112 . the control plane controller 120 may be located in a component outside of the wson 110 , such as an external server , or may be located in a component within the wson 110 , such as a ne 112 . the pce 130 may perform all or part of the rwa for the wson system 100 . specifically , the pce 130 may receive the wavelength or other information that may be used for the rwa from the control plane controller 120 , from the nes 112 , or both . the pce 130 may process the information to obtain the rwa , for example , by computing the routes , e . g . lightpaths , for the optical signals , specifying the optical wavelengths that are used for each lightpath , and determining the nes 112 along the lightpath at which the optical signal should be converted to an electrical signal or a different wavelength . the rwa may include at least one route for each incoming signal and at least one wavelength associated with each route . the pce 130 may then send all or part of the rwa information to the control plane controller 120 or directly to the nes 112 . to assist the pce 130 in this process , the pce 130 may comprise a global traffic - engineering database ( ted ), a rwa information database , an optical performance monitor ( opm ), a physical layer constraint ( plc ) information database , or combinations thereof . the pce 130 may be located in a component outside of the wson 110 , such as an external server , or may be located in a component within the wson 110 , such as a ne 112 . in some embodiments , the rwa information may be sent to the pce 130 by a path computation client ( pcc ). the pcc may be any client application requesting a path computation to be performed by the pce 130 . the pcc may also be any network component that makes such a request , such as the control plane controller 120 , or any ne 112 , such as a roadm or a foadm . fig2 illustrates an embodiment of a combined rwa architecture 200 . in the combined rwa architecture 200 , the pcc 210 communicates the rwa request and the required information to the pce 220 , which implements both the routing assignment and the wavelength assignment functions using a single computation entity , such as a processor . for example , the processor may process the rwa information using a single or multiple algorithns to compute the lightpaths as well as to assign the optical wavelengths for each lightpath . the amount of rwa information needed by the pce 220 to compute the rwa may vary depending on the algorithm used . if desired , the pce 220 may not compute the rwa until sufficient network links are established between the nes or when sufficient rwa information about the nes and the network topology is provided . the combined rwa architecture 200 may be preferable for network optimization , smaller wsons , or both . fig3 illustrates an embodiment of a separated rwa architecture 300 . in the separated rwa architecture 300 , the pcc 310 communicates the rwa request and the required information to the pce 320 , which implements both the routing aunction and the wavelength assignment function using separate computation entities , such as processors 322 and 324 . alternatively , the separated rwa architecture 300 may comprise two separate pces 320 each comprising one of the processors 322 and 324 . implementing routing assignment and wavelength assignment separately may offload some of the computational burden on the processors 322 and 324 and reduce the processing time . in an embodiment , the pcc 310 may be aware of the presence of only one of two processors 322 , 324 ( or two pces ) and may only communicate with that processor 322 , 324 ( or pce ). for example , the pcc 310 may send the rwa information to the processor 322 , which may compute the lightpath routes and forward the routing assignment to the processor 324 where the wavelength assignments are performed . the rwa may then be passed back to the processor 322 and then to the pcc 310 . such an embodiment may also be reversed such that the pcc 310 communicates with the processor 324 instead of the processor 322 . in either architecture 200 or 300 , the pcc may receive a route from the source to destination along with the wavelengths , e . g . gmpls generalized labels , to be used along portions of the path . the gmpls signaling supports an explicit route object ( ero ). within an ero , an ero label sub - object can be used to indicate the wavelength to be used at a particular ne . in cases where the local label map approach is used , the label sub - object entry in the fro may have to be translated . fig4 illustrates a distributed wavelength assignment architecture 400 . in the distributed wavelength assignment architecture 400 , the pce 410 may receive some or all of the rwa information from the nes 420 , 430 , and 440 , perhaps via direct link , and implements the routing assignment . the pce 410 then directly or indirectly passes the routing assignment to the individual nes 420 , 430 , and 440 , which assign the wavelengths at the local links between the nes 420 , 430 , and 440 based on local information . specifically , the ne 420 may receive local rwa information from the nes 430 and 440 and send some or all of the rwa information to the pce 410 . the pce 410 may compute the lightpaths using the received rwa information and send the list of lightpaths to the ne 420 . the ne 420 may use the list of lightpaths to identify the ne 430 as the next ne in the lightpath . the ne 420 may establish a link to the ne 430 and use the received local rwa information that may comprise additional constraints to assign a wavelength for transmission over the link . the ne 430 may receive the list of lightpaths from the ne 420 , use the list of lightpaths to identify the ne 440 as the next ne in the lightpath , establish a link to the ne 440 , and assign the same or a different wavelength for transmission over the link . thus , the signals may be routed and the wavelengths may be assigned in a distributed manner between the remaining nes in the network . assigning the wavelengths at the individual nes may reduce the amount of rwa information that has to be sent to the pce 410 . fig5 illustrates an embodiment of a wson architecture 500 comprising a plurality of nes coupled to one another via a plurality of links . while the nes may be coupled to each other via any number of links , in fig5 a first ne 502 may be coupled to a second ne 504 via a first link 512 comprising fibers 512 a and 512 b . similarly , the second ne 504 may be coupled to a third ne 506 via a second link 514 comprising fibers 514 a and 514 b , and the third ne 506 may be coupled to a fourth ne 508 via a third link 516 comprising fibers 516 a and 516 b . for each of the fibers of the first link 512 , the second link 514 , and the third link 516 , a plurality of wavelengths , such as wdm channels , may be used to transport optical signals between the nes . further , for each of the fibers , the optical signals may be transported using the same or different wavelengths or wavelength channels between the nes . the assignment of wavelengths or wavelength channels to the links may be referred to as the wavelength assignment information . the assignment of the wavelength channels to each link may be represented using a wavelength assignment matrix or a wavelength usage matrix , where each row corresponds to a link , each column corresponds to a wavelength channel , and each element indicates the number of fibers using the wavelength or wavelength channel in the link . for example , assume that the fibers in the first link 512 may each support eight wavelength channels , where the first and fifth channel are assigned to both fibers , the third , fourth , sixth , and eighth channel are assigned to one of the two fibers , and the remaining channels are not assigned . similarly , the fibers in the second link 514 may each support eight wavelength channels , where the fourth and eighth channel are assigned to both fibers , the second , third , and sixth channel are assigned to one of the two fibers , and the remaining channels are not assigned . likewise , the fibers in the third link 516 may each support eight wavelength channels , where the third channel are assigned to both fibers , the first , second , fourth , fifth , and sixth channel are assigned to one of the two fibers , and the remaining channels are not assigned . in such a case , the wavelength usage matrix , d 1j for fig5 is where each row , 1 , corresponds to a link , each column , j , corresponds to a wavelength or wavelength channel , and each element indicates the number of occurrences where the wavelength or wavelength channel is used on the fibers in the link . further , a wavelength availability information may be obtained by subtracting the wavelength usage matrix from the number of fibers in each link , m 1 . the difference , which may be represented by a wavelength availability matrix ( m 1 − d 1j ), may indicate the availability of fibers for each channel to transport the optical signals at each link . since the first link 512 , the second link 514 , and the third link 516 may each comprise two fibers ( i . e . m 1 = 2 ), the wavelength availability matrix is where each row , 1 , corresponds to a link , each column , j , corresponds to a wavelength or wavelength channel , and each element indicates the number of available assignment options or possibilities for the wavelength or wavelength channel assignment in the link . as shown in the first row of the wavelength availability matrix , the second and seventh wavelength channels may be available over both fibers in the first link 512 , the third , fourth , sixth , and eighth wavelength channels may be available over one , but not both , of the fibers in the first link 512 , and the first and fifth wavelength channels may not be available in either fiber in the first link 512 . as shown in the second row of the wavelength availability matrix , the first , fifth , and seventh wavelength channels may over both fibers in the second link 514 , the second , third , and sixth wavelength channels may be available over one , but not both , of the fibers in the second link 514 , and the fourth and eighth wavelength channels may not be available in either fiber in the second link 514 . as shown the third row of the wavelength availability matrix , the seventh and eighth wavelength channels may be available over both fibers in the third link 516 , the first , second , fourth , fifth , and sixth wavelength channels may be available over one , but not both , of the fibers in the third link 516 , and the third wavelength channel may not be available in either fiber in the third link 516 . the wavelength availability information for the nes along the path may be used to assign a suitable wavelength to the links according to a wavelength selection approach or algorithm . for instance , the wavelength availability matrix may be processed at the last ne in the path , to select a random , a least assigned , or a most assigned wavelength at the links . the selected wavelength may then be forwarded to the remaining nes . for example , the least or most assigned wavelength may be obtained by first taking a minimum of each column in the wavelength availability matrix . hence , the least loaded wavelength at the links may correspond to the column with the largest minimum , which represents the largest number of available assignment options for the wavelength . on the other hand , the most loaded wavelength may correspond to the column with the smallest minimum , which represents the smallest number of available assignment options for the wavelength . as such , in order to achieve distributed wa , it may be required to combine , communicate , or store the wavelength availability information for the nes . for example , obtaining and processing the wavelength availability matrix at the last ne may require forwarding the wavelength availability information for all the previous nes along the path to the last ne . such requirement may impose additional cost or burden on the distributed wa process , which may further increase as the number of nes , links , or both along the path increases . fig6 illustrates an embodiment of a distributed wa communications method 600 between a plurality of nes . the distributed wa communications method 600 may be implemented using any suitable signaling protocol , such as gmpls , or similar messaging protocol to exchange information between the nes . in the method 600 , the pce may receive a path computation request from an ne or other pcc ( not shown ). the request may include lightpath constraints such as a rwa computation option , a route parameter , a wavelength selection preference , an optimization degree , a timeliness characteristic , a duration , or combinations thereof . the pce may calculate or locate a path through the network that meets the lightpath constraints . for example , the pce may calculate a path comprising a plurality of nes coupled to each other via a plurality of links , for example as in the case of the wson architecture above . the pce may send a message comprising the routing assignment , such as a path computation reply 602 , to the first or source ne in the calculated path . in some embodiments , the path computation reply 602 may comprise an initial or suggested wavelength assignment , which may be used , updated or changed when implementing distributed wa among the nes . upon receiving the path computation reply 602 , the first or source ne may implement a distributed wa with the other nes in the path . specifically , the nes may each forward , one at a time , a path message 604 comprising updated wavelength availability information . the last or destination ne in the path may receive the path message 604 , assign a wavelength to the path 606 , and send back a reserve message 608 comprising the wavelength assignment to the previous nes . in the case where no wavelength can be assigned to the path , for example when no common wavelength is available at all the nes , the destination ne or any other ne making such a determination may send back a path error message to the previous nes to inform the nes that the distributed wa is blocked . additionally , the source node may send a confirmation message 610 to the pce to inform the pce whether a path wavelength assignment has been established or blocked . fig7 illustrates one embodiment of a distributed wa method 700 which may be implemented to forward and update the wavelength availability at the nes and assign a wavelength to the path using the wavelength availability . specifically , the wavelength availability information may be forwarded via signaling or messaging and updated at each ne starting from the source ne and ending at the destination ne , for example using the distributed wa communications method . at the last ne in the path , a wavelength may be selected based on a wavelength selection approach or algorithm to assign a suitable , favorable , or optimal wavelength to the path along the nes . the selected wavelength may then be forwarded back to each of the nes from the destination ne to the source ne . by using the local wavelength availability information at the nes and communicating the wavelength availability between the nes , accessing or storing the nes &# 39 ; wavelength information at a network database or processing the wavelength information at a management plane level becomes optional and may not be needed for distributed wa . at block 710 , the method 700 may create or receive the wavelength availability information . the wavelength availability information may comprise a list of the wavelengths available at the previous nes . for instance , the wavelength availability may be received in the form of a single row matrix comprising at each column the number of fibers that are available to transport the optical signals for each wavelength across all of the previous links . if the ne is a source ne , the ne creates the wavelength availability information using its local wavelength availability information , perhaps using a suggested or restricted wavelength set . if the ne is not the source ne , the ne receives the wavelength availability information from the previous ne in the path . in such a case , the wavelength availability information may comprise the available wavelengths for all previous nes in the path . at block 720 , the method 700 may update the wavelength availability information using the ne &# 39 ; s available wavelength information . in an embodiment , the ne &# 39 ; s local available wavelengths , i . e ., on the link between the present ne and the next ne in the path , may be compared with the received available wavelengths . the wavelength available information may then be updated to indicate one or more common available wavelengths between the received wavelength availability information and the local availability information . in another embodiment , the wavelength availability matrix or row associated with the link may be established , as shown above . the wavelength availability matrix may be compared to the wavelength availability matrix received from the previous ne , and the wavelength availability information may be updated by taking a minimum between the two matrices . the ne may then send the updated wavelength assignment information to the next ne in the path . at block 730 , the method 700 may determine whether the wavelength availability information has been received and updated at the destination or last ne in the path . in embodiments , the path assignment information may be forwarded along with the wavelength availability information via signaling between the nes . in such a case , the method 700 may use the path assignment information from the poe , which may include the nes &# 39 ; network addresses , to determine whether the ne is the last ne indicated in the path assignment . the method 700 may proceed to block 740 if the condition in block 730 is met , i . e . if the ne is the last ne in the path . otherwise , the method 700 may proceed to block 750 . at block 740 , the method 700 may process the updated wavelength availability information based on a wavelength selection approach to select one wavelength that may be assigned to all the nes ( and the corresponding links ) in the path . for instance , a random , a first , a most used , or a least loaded ( ll ) wavelength may be selected from the list of updated available wavelengths at the destination ne . the selected wavelength may be sent back to the previous ne in the path via signaling , for example using the wavelength assignment reply , which may be in turn forwarded between each of the nes to the source ne . alternatively , when no wavelength may be selected or assigned , for example when no wavelength in common with all the nes is available , the wavelength assignment is blocked and an error message may be sent back instead . at block 750 , the method 700 may wait at the ne to receive the wavelength assignment reply or the error message indicating that the wavelength assignment is blocked . when the ne receives the wavelength assignment reply , the selected wavelength is assigned to the ne link and the ne &# 39 ; s wavelength availability information may be updated to account for the assigned wavelength , for example , by changing the status of the selected wavelength from available to assigned . in an embodiment , the ne may be configured to wait for a wavelength assignment reply for a predetermined period of time , such that the ne may return to normal network operations when the time expires before receiving the wavelength assignment reply or , alternatively , when receiving an error message . fig8 illustrates one embodiment of a ll wavelength selection method 800 , which may be implemented in for distributed wa . specifically , the ll wavelength selection method 800 may be implemented at any ne in the path . the method 800 may obtain the ne &# 39 ; s local wavelength availability , obtain a ll row matrix or vector using the local wavelength availability , and forward the ll vector . when the destination ne receives the ll vector , a wavelength may be assigned using the ll vector . at block 810 , the method 800 may obtain the local assigned wavelength information . specifically , the ne may obtain the number of assigned links , or alternatively the number of assigned fibers in each link , for each wavelength or wavelength channel . for instance , the number of assigned links or fibers may be combined in the form of a single - row local wavelength usage matrix with each column corresponding to one of the wavelengths or channels . in such a case , the local wavelength usage matrices for the first link ne 502 , the second ne 504 , and the third ne 506 of fig5 are [ 2 0 1 1 2 1 0 1 ], [ 0 1 1 2 0 1 0 2 ], and [ 1 1 2 1 1 1 0 0 ], respectively . each node , e . g . ne 502 , ne 504 , and ne 506 , is aware of the wavelength usage or for its egress ports , but may be unaware of the other node &# 39 ; s wavelength usages . at block 820 , the method 800 may initiate or obtain the local wavelength availability using the assigned wavelength information . for instance , a local wavelength availability matrix may be established by subtracting the local wavelength usage matrix from the number of links or fibers for each wavelength or channel at each node . as such , the local wavelength availability matrices for the first link ne 502 , the second ne 504 , and the third ne 506 of fig5 are [ 0 2 1 1 0 1 2 1 ], [ 2 1 1 0 2 1 2 0 ], and [ 1 1 0 1 1 1 2 2 ], respectively . again , each node is aware of its wavelength availability , but may be unaware of the other nodes &# 39 ; wavelength availability . at block 830 , the method 800 may initiate or obtain the ll vector using the local wavelength availability information . the ll vector may comprise the minimum number of available or unassigned links or fibers for each wavelength or channel . for instance , the method 800 may use the local wavelength availability matrix to obtain the ll vector when the ne is the source ne . for example , in the wson architecture 500 , the ll vector at the first ne 502 may be equal to the established local wavelength availability matrix , [ 0 2 1 1 0 1 2 1 ]. alternatively , when the ne is not the source ne , the ll vector may be updated by combining the local wavelength availability matrix with the ll vector received from the previous ne in the path . specifically , the ll vector may be obtained by taking a minimum of each column in the received ll vector and the local wavelength availability matrix . for example , in the a wson architecture 500 , the updated ll vector at the second ne 504 may be obtained by taking a minimum of the ll vector received from the first ne 502 , [ 0 2 1 1 0 1 2 1 ], with the local wavelength availability matrix at the second ne 504 , [ 2 1 1 0 2 1 2 0 ]. as such , the updated ll vector at the second ne 504 may be equal to [ 0 1 1 0 0 1 2 0 ]. similarly , the updated ll vector at the third ne 506 may be taking a minimum of the ll vector received from the second ne 504 , [ 0 1 1 0 0 1 2 0 ], with the local wavelength availability matrix , at the third ne 506 , [ 1 1 0 1 1 1 2 2 ]. as such , the updated ll vector may be equal to [ 0 1 0 0 0 1 2 0 ]. in another embodiment of the method 800 , block 830 may be combined with block 820 and / or block 810 . at block 840 , the method 800 may determine whether the ne is the last ne in the path . for instance , the path assignment information forwarded from the pce may be used to match the ne &# 39 ; s network address or identification ( id ) to the destination ne &# 39 ; s address or id . the method 800 may proceed to block 850 if the condition in block 840 is not met , i . e . if the ne is not the destination ne . otherwise , the method 800 may proceed to block 860 . at block 850 , the method 800 may forward the updated ll vector to the next ne in the path . the ll vector may be forwarded via a signaling protocol , such as gmpls , messaging , or other communication protocol that may be established between the nes . at block 860 , the method 800 may process the updated ll vector to obtain the path wavelength assignment . based on the ll wavelength selection algorithm , the assigned wavelength may correspond to the ll vector column comprising the largest number of available links or fibers . for example , in the wson architecture 500 , the assigned wavelength at the fourth ne 508 , which may be the destination ne , may correspond to the maximum entry in the updated ll vector from the third node 506 , [ 0 1 0 0 0 1 2 0 ], which is equal to 2 at the seventh column . hence , the seventh wavelength or channel corresponding to the seventh column may be assigned to transport the associated signal . as such , the method 800 may assign to the path the wavelength available over most links or fibers between the nes . accordingly , implementing the method 800 may improve balancing or distributing assigned wavelengths among the network paths . in another embodiment , the method 800 may be based on a most used wavelength selection approach instead of ll wavelength selection . as such , the updated ll vector at the last ne may be processed such that the assigned wavelength may correspond to the column comprising the least number of available links or fibers . for example , in the wson architecture 500 , the assigned wavelength at the fourth ne 508 may correspond to the minimum non - zero entry in the updated ll vector from the third node 506 , [ 0 1 0 0 0 1 2 0 ], which may be equal to one at the second or sixth column . hence , the second or sixth wavelength or channel may be assigned . alternatively , the assigned wavelength may correspond to the absolute minimum entry in the updated ll vector , which may be equal to zero at the first , third , fourth , fifth , or eighth column . hence , the first , third , fourth , fifth , or eighth wavelength or channel may be assigned . as such , the method 800 may assign to the path the wavelength used over most links or fibers between the nes . in other embodiments , the assigned wavelength may correspond to the first column or random column of the updated ll vector at the last ne and the method 800 may be based on a first fit or random wavelength selection approach , respectively . in some embodiment , the method 800 may assign at the destination ne a path wavelength based on one of the wavelength selection approaches above as selected or determined by the pce or operator . the network components described above may be implemented on any general - purpose network component , such as a computer or network component with sufficient processing power , memory resources , and network throughput capability to handle the necessary workload placed upon it . fig9 illustrates a typical , general - purpose network component 900 suitable for implementing one or more embodiments of the components disclosed herein . the network component 900 includes a processor 902 ( which may be referred to as a central processor unit or cpu ) that is in communication with memory devices including secondary storage 904 , read only memory ( rom ) 906 , random access memory ( ram ) 908 , input / output ( i / o ) devices 910 , and network connectivity devices 912 . the processor may be implemented as one or more cpu chips , or may be part of one or more application specific integrated circuits ( asics ). the secondary storage 904 is typically comprised of one or more disk drives or tape drives and is used for non - volatile storage of data and as an over - flow data storage device if ram 908 is not large enough to hold all working data . secondary storage 904 may be used to store programs that are loaded into ram 908 when such programs are selected for execution . the rom 906 is used to store instructions and perhaps data that are read during program execution . rom 906 is a non - volatile memory device that typically has a small memory capacity relative to the larger memory capacity of secondary storage 904 . the ram 908 is used to store volatile data and perhaps to store instructions . access to both rom 906 and ram 908 is typically faster than to secondary storage 904 . while several embodiments have been provided in the present disclosure , it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure . the present examples are to be considered as illustrative and not restrictive , and the intention is not to be limited to the details given herein . for example , the various elements or components may be combined or integrated in another system or certain features may be omitted , or not implemented . in addition , techniques , systems , subsystems , and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems , modules , techniques , or methods without departing from the scope of the present disclosure . other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface , device , or intermediate component whether electrically , mechanically , or otherwise . other examples of changes , substitutions , and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein .