Serial attached small computer system interface topologies are designed with limited data available. Determining a valid topology to meet certain requirements is slow, defies appropriate simulation, and is not necessarily straightforward.
Engineers designing topologies to meet certain requirements must do so with incomplete information. The only check for topology validity is during performance analysis. The solution will usually produce a workable topology but it might not be the best solution to meet all requirements. The design of a topology is limited by the engineer's ability to conceptualize all of the serial attached small computer system interface topology clearly.
Topology design decisions are made early in the development process, and cannot be checked until performance testing is accomplished. The optimal serial attached small computer system interface solution, given certain topology requirements, cannot be reliably found.
Consequently, it would be advantageous if an apparatus existed that is suitable for producing a serial attached small computer system interface topology to meet a given set of topology requirements.
Accordingly, the present invention is directed to a novel method and apparatus for producing a serial attached small computer system interface topology to meet a given set of topology requirements.
One embodiment of the present invention is a method for implementing a genetic algorithm to determine a serial attached small computer system interface topology. In this embodiment, an initial serial attached small computer system interface topology population is generated and the fitness of the initial population is calculated based on the average time of each input/output. New individuals are “bred” based on characteristics of individuals in the initial population, and existing individuals are replaced with the new individuals to form a new population. The fitness of the new population is then calculated and compared to the fitness of the initial population. The process is repeated iteratively until termination criteria are met.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention claimed. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate an embodiment of the invention and together with the general description, serve to explain the principles.
The numerous advantages of the present invention may be better understood by those skilled in the art by reference to the accompanying figures in which:
Reference will now be made in detail to the subject matter disclosed, which is illustrated in the accompanying drawings. The scope of the invention is limited only by the claims; numerous alternatives, modifications and equivalents are encompassed. For the purpose of clarity, technical material that is known in the technical fields related to the embodiments has not been described in detail to avoid unnecessarily obscuring the description.
Referring to
Referring to
In at least one embodiment of the present invention, the defined characteristics of the topology include a list of PHYs that are not connected to anything. For each serial attached small computer system interface address there will be a type definition determining if it is an expander, initiator, or drive (target emulation or otherwise). Each PHY address definition will contain abilities fields that define speed and initiator/target capabilities. Each Expander definition structure will contain an array of PHYs, their capabilities, their connections, and total number of PHYs. Each initiator definition structure will contain an input/output pattern array list containing input/output definitions and percentage of total input/outputs. The input/output definitions will consist of direction (read/write), percentage and block size. Each target definition structure will contain the target capabilities and what the target is attached to.
The system calculates 202 the fitness of the initial population. Fitness is determined by an input/output simulation under normal conditions using input/output patterns given in the individual encoding. In at least one embodiment of the present invention, fitness is a measure of the average time of each input/output. In at least one embodiment of the present invention, fitness is measured for each individual in the topology. The fitness of each individual determines the probability of the individual being selected for the next generation. In the context of the present specification, “individual” should be understood to a serial attached small computer system interface (SAS) topology.
Individuals from the initial population are bred 204 to produce a new population. Breeding in the context of the present specification refers to combining features of individuals in the population to produce new individuals. New individuals replace individuals from the initial population having the least desirable characteristics. Breeding in the environment is not random, and usually occurs between two individuals of similar defined characteristics. In at least one embodiment of the present invention, breeding is restricted to two individuals of similar element structure.
In at least one embodiment of the present invention, during breeding, mutations are introduced 206 to randomize individual and topology characteristics. Mutation refers to modifications such as the number of PHYs in an individual, number of expanders in the topology and connections between individuals. Each individual definition contains an element, such a data bit, indicating whether an individual can be mutated. The mutation algorithm will skip over an individual with this element set.
In at least one embodiment of the present invention, mutations are validated 208. Mutation validation 208 can be implemented in two ways; throw out individuals with invalid mutations, or the mutation algorithm can be designed to never create invalid mutations based on accurately defined constraints. Constraints can be defined to apply to one or more individuals, or to the entire topology.
In at least one exemplary embodiment of the present invention, the number of expanders in a topology should not exceed a certain, defined number. Certain definitions, such as the defined input/output loads within each individual, will not be modified.
In at least one exemplary embodiment of the present invention, a computer system implementing embodiments of the present invention determines 212 if termination criteria have been met. In at least one embodiment of the present invention, termination criteria are based on the acceleration of fitness improvement. In at least one embodiment of the present invention, termination criteria are based on the top fitness of the topology over a predefined number of generations.
In this example, if termination criteria are not met, the computer system breeds 204 individuals from the new population and continues as described herein to produce a new generation of the topology. The process continues until the computer system determines 212 that termination criteria have been met, when the process ends 214. By these methods, a topology having desired fitness characteristics is produced.
Referring to
In at least one exemplary embodiment of the present invention, the processor 300 is configured, through computer executable program code, to generate an initial population based on known topologies. In at least one exemplary embodiment of the present invention, individual element characteristics, topology requirements and fitness criteria are defined in extensible markup language and stored in the memory 302. In at least one embodiment of the present invention, desired input/output characteristics are defined in extensible markup language and stored in the memory 302.
In this example, the processor 300 calculates the fitness of the initial population. Fitness is determined by an input/output simulation under normal conditions using input/output patterns given in the individual encoding. In at least one embodiment of the present invention, fitness is a measure of the average time of each input/output. In at least one exemplary embodiment of the present invention, the processor 300 measures fitness for each individual in the topology. The fitness of each individual determines the probability of the individual being selected for the next generation.
In at least one exemplary embodiment of the present invention, the processor 300 breeds individuals from the initial population to produce a new population. Breeding in the context of the present specification refers to combining features of individuals in the population to produce new individuals. In this example, new individuals replace individuals from the initial population having the least desirable characteristics. Breeding in the environment is not random, and usually occurs between two individuals of similar defined characteristics. In at least one exemplary embodiment of the present invention, breeding is restricted to two individuals of similar element structure.
In at least one exemplary embodiment of the present invention, during breeding, the processor 300 introduces mutations to randomize individual and topology characteristics. Mutation refers to modifications such as the number of PHYs in an individual, number of expanders in the topology and connections between individuals. In at least one exemplary embodiment of the present invention, each individual definition contains an element, such a data bit, indicating whether an individual can be mutated. The processor 300 will skip over an individual with this element set.
In at least one exemplary embodiment of the present invention, the processor 300 validates mutations. Mutation validation can be implemented in two ways; the processor 300 throws out individuals with invalid mutations, or the processor 300 never creates invalid mutations based on accurately defined constraints. Constraints can be defined to apply to one or more individuals, or to the entire topology.
In at least one exemplary embodiment of the present invention, the number of expanders in a topology should not exceed a certain, defined number. Certain definitions, such as the defined input/output loads within each individual, will not be modified.
The processor 300 determines if termination criteria have been met. In at least one exemplary embodiment of the present invention, termination criteria are based on the acceleration of fitness improvement. In at least one exemplary embodiment of the present invention, termination criteria are based on the top fitness of the topology over a predefined number of generations.
If termination criteria are not met, the processor 300 breeds individuals from the new population and continues as described herein to produce a new generation of the topology. The process continues until the processor 300 determines that termination criteria have been met, when the process ends.
It is believed that the present invention and many of its attendant advantages will be understood by the foregoing description of embodiments of the present invention, and it will be apparent that various changes may be made in the form, construction, and arrangement of the components thereof without departing from the scope and spirit of the invention or without sacrificing all of its material advantages. The form herein before described being merely an explanatory embodiment thereof, it is the intention of the following claims to encompass and include such changes.