Impacts of radio-identification on cryo-conservation centers This article deals with the use of discrete-event simulation as a decision support tool for estimating the impact of Radio Frequency IDentification (RFID) technologies on processes and activities of biological sample storage areas (called biobanks). We first give a detailed description of biobank flows and identify subprocesses improved using RFID technologies. Several indicators, such as inventory reliability and human resource utilization, are compared and discussed for different scenarios involving the use of different RFID technologies. A special emphasis is put on the so-called rewarehousing activity, which RFID makes possible and which consists in reassigning tubes to empty places when boxes are emptied. For this particular activity, optimization algorithms are developed and embedded in the simulator. This study shows the potential use of RFID in biobanks and the value of simulation for estimating and optimizing its introduction in such complex socio-technical systems. Trying to estimate the impact of introducing autoidentification technologies in a logistic process is a complex topic. The possibilities offered by these technologies may indeed affect the process in many different ways, at several decision levels, sometimes even allowing for drastic changes. Simulation offers a practical tool for addressing these questions without requiring costly and very focused pilot studies. This article proposes to use discrete-event simulation to estimate the impact of introducing Radio Frequency IDentification (RFID) technologies within biobanks. This study is part of the so-called MISTRALS project, involving industrial companies (Tagsys, IBM, Psion Teklogics, and SPS); two French health structures developing a biobank activity: the Institute Paoli-Calmettes (IPC), in Marseilles, the Teaching Hospital of Nice (CHU-N) and two research departments of theÉcole Nationale Supérieure des Mines de Saint-Étienne.. This study was partially financed by the Conseil Général 13 of the Bouches du Rhône. MISTRALS was labeled by PAC-ID cluster and was funded by the DGE/MINEFI. Authors' addresses: S. Housseman, N. Absi, D. Feillet, and S. Dauzère-Pérès, Ecole des Mines de SaintEtienne, CMP Georges Charpak, F-13541, Gardanne, France; email: {housseman, absi, feillet, dauzereperes}@emse.fr. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works requires prior specific permission and/or a fee. Permissions may be requested fromPilot plants and demonstrators, which can be considered as real-life simulators, are certainly the best way to assess the behavior of a contactless communication system within a particular environment, even though they are expensive, potentially risky, and hardly extensible [Royston 1999 ]. Furthermore, they are able to provide very precise information on the system (e.g., processing times captured by RFID) that can help define acute parameters for simulating relatively similar processes [Boginski et al. 2007 ]. In the case of the MISTRALS project, the development of a demonstrator is scheduled. Unfortunately, at this stage of the project, the demonstrator is still not available. As a consequence, the results presented in this article are partially based on forecast and estimated values. In this article, we estimated the impact of RFID technologies in a particular healthcare environment. The methodology used for the study was discrete-event simulation, which permitted quantifying the benefits of integrating new auto-ID technologies and devices, regarding a set of performance indicators such as human resource utilization, lead times or error rates. Such tools can be very helpful for facilities interested in these technologies, should they be adopted because of new legislation or for the sake of optimizing their logistics.. An original modeling approach was proposed, separating information management and control into different processes. This approach appears particularly relevant in the context of simulating new auto-ID technologies and could be generalized to other (health) production systems. Thanks to its decomposition in configuration files, the proposed model also allows for quick modeling of other biobanks and/or material configurations. The results we observed show that according to our assumptions and parameters, RFID technologies may considerably improve the performance of biobanks with respect to the different indicators.. Another possibility offered by RFID, and investigated in the study, was the so-called rewarehousing activity. While the increase that can be forecast in the number of handover requests should imply better inventory management, reoptimizing the layout of cryotubes in racks is not possible as long as an auto-ID technology does not help accelerate the process and avoid exposing samples for a long time to ambient temperature. Since none of our partners implemented such a process, we defined, studied, and compared various policies. Our observations point out that rewarehousing can lead to significant savings and that, more generally, studying the new activities allowed by RFID technologies is an important issue.. Several perspectives are opened by this work. A graphical user interface could allow managers to model their biobank and use the decision support tool at an operational level or for evaluating different strategic scenarios. Enlarging the scope of the model would enable us to have a broader view of biobank activities and evaluate the global impact of the adoption of auto-ID technologies within a network of health facilities. Improving the way human resources are modeled, using a multi-agent system and adding performance shaping factors with different psychological profiles for example, would also allow for more realistic modeling.. With regards to the rewarehousing activity, several research venues are still open. The different triggers described in Section 2.2 should be investigated. Developing dynamic triggers taking account of forecast activities and handover requests would also be very promising. Other policies, including the possibility of destocking or restocking boxes at any moment in time, could be defined and evaluated. Scenarios involving multiple human resources would also be of interest. All of these possibilities offer a variety of original combinatorial optimization problems for which solution approaches need to be developed. As a simulator, the accuracy of our decision support system is strictly related to the preciseness of the data that feed the system. Real-life observations are still needed to validate several of the values currently defined in the model. This task notably relies on developing long and thorough observations of the demonstrator. Regarding events such as sample misreading, chip failure, or chip-tube splitting, in order to define accurate probabilities observations of the devices must be made under real conditions of use. Other values such as estimated times can be approximated a priori, but could still be improved with careful observations of the demonstrator or by RFID tracking. Another interesting observation will concern the time needed by the employees to adapt to the new devices, which could help including in the simulator a more realistic and dynamic modeling of the employees. Also, some reluctance of the staff is always possible, but the fact that all of the personnel has been involved in this project significantly reduces this possibility. On the contrary, assumptions concerning error, probabilities cannot easily be refined afterwards, as sources of errors can be complex and difficult to trace.. Another limit of our study is that it does not include any economic indicator. As stated in previous sections, such measures would be extremely volatile. Introducing RFID in biobanks results in a large panel of fixed costs (readers, antennas, antenna installation costs, IS updates, hardware, software, consulting...) as well as numerous variable costs (impact on human resource utilization, on the purchase of racks, maintenance costs, purchase of smart tubes...). Additional costs for training the staff are also complex to apprehend, as they are influenced by managerial policies and the will to maintain a double labeling (barcode-RFID) for a long period. The costs of tagging the existing stock when introducing the technology or continuing the activity with both systems, are complex questions that could not be investigated in this study. All experimental results are given in Tables III, IV , and V, and are supported by Figures 3, 4 , and 5, respectively. The notation corresponding to the scenarios in the result tables is as follows: Curr. Scenar is the case with no RFID nor RNA automaton. In RNA Automaton, a DNA/RNA automaton was added, which is also present in all scenarios including RFID. Pen-Rder and 2DRder correspond respectively to the use of a pen-size antenna or an X/Y antenna during the inventory process. The non-RFID scenarios do not include the rewarehousing activity. The Re-Wa argument corresponds to the case when the emergency trigger is enabled as well as a weekly planned trigger. In this case, boxes must contain only tubes of the same kind; the "No BPK" argument means that this constraint is removed. The "Emergency only" argument corresponds to the case when there is no scheduled rewarehousing. The algorithm used for rewarehousing is the intuitive algorithm described in Section 3.3. Adding the longTerm argument means that the long term algorithm is used. Table III The percentage of human resource utilization in the initial scenario Curr.Scenar is 51.74%, which can be explained by considering that employees spend a large amount of time working for other services and that the amount of work depends on the arrival rate, which is generally irregular. Slightly more than 10% of this time is saved when adding the RNA automaton in the clean area (human resource utilization of 45.21%). The introduction of RFID has more impact on this indicator with an additional decrease of about 30%. Introducing the rewarehousing activity has the opposite effect; The additional time spent for this activity appears very limited however (less than 0.5%) and is largely counterbalanced by the savings in rack utilizations (decrease of 20%) . Table V will further analyze this latter indicator showing that results can vary depending on initial stock levels.. When analyzing processing times, similar results can be observed. In particular, IS Fulfillment delays are reduced with RFID, since they initially consist mainly in handwriting, data keyboarding, and information leaf transportation, which can almost be entirely removed. Note that this reduction is all the more interesting since these tasks are far from the core competences of the employees. Throughput times reveal that the savings in time also result in accelerated handling operations for incoming samples, which is also an important indicator for quality. A final point worth mentioning about processing times is the small influence of the type of RFID reader (pen or X/Y antenna), which does not make for significant differences.. Table IV and Figure 4 analyze the effect of the employee performance level (EPL) on inventory and computerization errors. Scenarios involving rewarehousing are not included, as error rates are not significantly affected by this activity. Figure 4 show the high impact of the employee performance level when RFID is not present (Curr.Scenar, RNA Automaton). The impact is quite reduced when auto-ID technologies are used, as many critical processes like handwriting or manual computerizations are removed. This result is important as it shows that RFID technologies are more profitable to organizations where the staff is less qualified (or overloaded), that is most likely the ones that cannot afford these technologies. Table V and Figure 5 focus on the impacts of rewarehousing decisions. The results for all of these scenarios are reported for the three initial stock levels detailed in Section 4.2. These results include the following.. -The average number of emergency triggers launched (Number Launched) and the average number of times when it did not allow emptying a box (# Failed), as well as the standard deviation for this indicator; the average value for # Failed is written in bold as it indicates exactly the number of racks that had to be bought. -The average number of boxes emptied during planned rewarehousings (# Free Boxes) and the number of scheduled rewarehousing that were canceled since no box could be emptied (# Canceled); in this case, it is important to understand that the processing time for rewarehousing was then saved.. A first tendency drawn from Table V concerns the impact of the initial stock levels. Whatever the scenario, about 20 new racks are needed for the "Empty stock" case, while no racks need to be bought for the 77.5% initial level and a very limited number of racks (varying around 1) are bought in the 81% case. "Empty stock" corresponds to the worst situation for rewarehousing, where every box is full at the beginning of the simulation (or samples in boxes are not tagged yet). On the contrary with an initial level of 77.5%, empty places in the boxes are sufficiently numerous, so that buying new racks is never needed. An initial stock level of 81% defines a compromise between these two extreme situations. Note that these values depend on the sample arrival and handover request rates that were defined for the simulation. However, an important phenomenon is not explicitly shown in the table. The initial stock level scarcely impacts the number of new racks needed when no rewarehousing policy is implemented. Indeed, empty places present in the storage area can no longer be exploited in this latter case (which 10,00%. 12,00% C u r r , S c e n a r ( 0 , 5 ) C u r r , S c e n a r ( 1 ) C u r r , S c e n a r ( 2 ) corresponds to the actual situation). Whatever the initial stock level, the number of new racks needed would approximately attain 24, as shown by Table III. In the long term, once a significant number of tubes are tagged in the biobank, and as long as sample arrivals and handover requests exist, Table V demonstrates that rewarehousing is unavoidable and successful for limiting the growth of the biobank without pruning sample sets. The comparisons of the different scenarios against the referent scenario also show interesting results. With regard to the readers (2DRder & Re-Wa against Pen-Rder & Re-Wa), by allowing inventorying boxes more quickly than a pen-reader, X/Y antennas allow emptying more boxes while performing rewarehousing. As a consequence, emergency rewarehousings also happen less frequently. However, the effect on the number of needed racks remains rather limited.. Removing the BoxPerKind constraint (2DRder & Re-Wa against 2DRder & Re-Wa No BPK) has a surprising effect at first sight. While one would expect more effectiveness, results are at best slightly improved, and sometimes deteriorated. The reason for this counter-intuitive result rests on the fact that a single transitory box is used in this case (compared to one transitory box per type otherwise).. When rewarehousing is only triggered in emergency (2DRder & Re-Wa against 2DRder & emergency only), the number of emergencies largely increases, as expected. For example in the worst case (77.5% initial stock level), emergencies approximately increase from two per week to five per week. At the same time, this trigger appears to be sufficiently effective to limit the number of new tracks needed. Intuitively, one can understand that the use of the storage area can be optimized rather equivalently with the two triggers, but the times at which optimization happens are different: a relatively long time every week with the planned trigger, potential numerous unpredictable short times with the emergency trigger. The last scenario investigated concerns a modification of the algorithm used for rewarehousing . As explained in Section 3.3, the Intuitive algorithm has a myopic view on the optimization. The Long Term algorithm is designed to amend this behavior. With this algorithm, fewer boxes are emptied (one box per planned rewarehousing instead of more than two or three, on average, with the Intuitive algorithm for the 81% and 77.5% stock level scenarios). The number of emergencies increases, but the reassignment of tubes is more effective and fewer additional racks are needed. A daily planning of the rewarehousing activity still highlights the impact of the Long Term algorithm, nearly always keeping one emptied box per planned rewarehousing, but also removing most of the emergencies and almost avoiding the purchase of any rack. To implement our model, we used the Arena simulation software, described by Law and Kelton [2000] as general purpose simulation software, allowing the creation of customized modules, templates, and user friendly front ends. It can be easily connected with other software through ActiveX [Seppanen 2000 ], and encodes user functions through VBA blocks. In our model, the specific functions (such as error generation, stock management and rewarehousing algorithms) are implemented using the VBA programming language. Appendix 2 provides more details on our implementation of the Arena software. Our goal being to compare material and organizational configurations, we designed a generic model and used a spreadsheet to define the scenario parameters.. The system was implemented based on the process decomposition that we proposed in Section 3.1. For example, introducing an RFID reader at the reception point will reduce processing times of some of its processes and error probabilities. For the sake of illustration, in Figure 4 , the Reception.Info processing time and error probability are used in the VBA block, VBA 14. Other dysfunctions, such as device or network crashes, are also considered. When the system crashes, employees must manually access databases and relabel tubes, which is a time consuming action.. Allowing an easy modification of parameters, such as process durations, tactical decisions (e.g., the frequency of some activities) or arrival rates, is an important feature when developing a generic tool. At the beginning of each replication, the system opens a spreadsheet file containing the scenario parameters. The model can be parameterized to simulate several scenarios over a given number of replications. We implemented the four material configurations described in Section 3.2 and designed decision scenarios related to the rewarehousing activity. Each scenario is described through values in a column of a spreadsheet leaf. The configuration file also contains leaves with the number of activities, and distances between areas. Tables I and II are extracted from this configuration file.. The employees are modeled using simple resources, for example, "Available," Busy, or "Unreachable." VBA blocks are user defined blocks used to fill the databases and assign random generated attributes like errors, process durations, number of aliquots in samples, arrival or demand of samples, and so on. We use these blocks to improve the way resources are modeled and for inventory management. We also implemented a basic PSF (performance shaping factor) based on the number of samples waiting to be carried out. We consider that a large number of pending jobs increases the error rate by 5%.

O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Hybrid analytical modeling of pending cache hits, data prefetching, and MSHRs This article proposes techniques to predict the performance impact of pending cache hits, hardware prefetching, and miss status holding register resources on superscalar microprocessors using hybrid analytical models. The proposed models focus on timeliness of pending hits and prefetches and account for a limited number of MSHRs. They improve modeling accuracy of pending hits by 3.9× and when modeling data prefetching, a limited number of MSHRs, or both, these techniques result in average errors of 9.5% to 17.8%. The impact of non-uniform DRAM memory latency is shown to be approximated well by using a moving average of memory access latency. To design a new microprocessor architects typically create or extensively modify a cycleaccurate simulator and run numerous simulations to quantify performance trade-offs. Both simulator creation or modification and data collection using the simulator can be significant components of overall design-to-market time. As microprocessor design cycles stretch with increasing transistor budgets, architects effectively start each new project with less accurate information about the eventual process technology that will be used, leading to designs that may not achieve the full potential of a given process technology node.. An earlier version of the work in this article appeared in the 41st IEEE/ACM International Symposium on Microarchitecture (MICRO'08) [Chen and Aamodt 2008a] . The new material in this article consists of: (1) an analysis of the trace of mcf showing the importance of accurately modeling pending cache hits in pointer chasing benchmarks; (2) a comparison of our novel compensation technique to the prior proposed fixed-cycle compensation techniques when pending hits are modeled and SWAM is applied; (3) a sensitivity analysis of our analytical models for various instruction window sizes and fixed memory access latencies; (4) an evaluation of the impact of nonuniform memory access latency due to DRAM timing and contention on the accuracy of our analytical models; (5) a detailed description and analysis of the reason that the overall average memory access latency is not enough to achieve reasonable accuracy for analytical models, as well as a proposal for using average latency in short time intervals when considering DRAM timing and contention. Author's address: T. M. Aamodt, Department of Electrical and Computer Engineering, University of British Columbia, 2356 Main Mall, Vancouver, BC, Canada V6T 1Z4; email: aamodt@ece.ubc.ca. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works requires prior specific permission and/or a fee. Permissions may be requested from An orthogonal approach to obtaining performance estimates for a proposed design is analytical modeling [Yi et al. 2006 ]. An analytical model employs mathematical formulas that approximate the performance of the microprocessor being designed based on program characteristics and microarchitectural parameters. One of the potential advantages of analytical modeling is that it can require much less time than crafting and running a performance simulator. Thus, when an architect has analytical models available to evaluate a given design, the models can help shorten the design cycle. While cycle-accurate simulator infrastructures exist that leverage reuse of modular building blocks [Emer et al. 2002; Vachharajani et al. 2002] , and workload sampling [Sherwood et al. 2002; Wunderlich et al. 2003 ] can reduce simulation time, another key advantage of analytical modeling is its ability to provide insights that a cycle-accurate simulator may not.. Several analytical models have been proposed before [Chow 1974; MacDonald and Sigworth 1975; Shen 1994, 1997; Jacob et al. 1996; Ofelt 1999; Michaud et al. 1999 Michaud et al. , 2001 ; Karkhanis and Smith 2004; Eyerman et al. 2009 ] and Karkhanis and Smith's first-order model [Karkhanis and Smith 2004 ] is relatively accurate. Their first-order model separately estimates the cycles per instruction (CPI) component due to branch mispredictions, instruction cache misses, and data cache misses, then adds each CPI component to an estimated CPI under ideal conditions to arrive at a final model for the performance of a superscalar processor. However, little prior work has focused on analytically modeling the performance impact of data prefetching and the performance impact of hardware support for a limited number of overlapping long latency data cache misses due to finite MSHR resources. In this article we explore how to accurately model these important aspects of modern microprocessor designs.. One significant aspect of long latency data cache misses is the large effect of pending data cache hits (PH) on overall performance. In this work a pending data cache hit means a memory reference to a cache block for which a request has already been initiated by an earlier instruction but has not yet completed (i.e., the requested block is still on its way from memory). Accurately modeling pending data cache hits is important both for predicting performance of out-of-order execution and prefetching in the presence of long memory access latencies. When pending data cache hits (also referred to as pending hits later in this article) are treated as cache hits in the first-order model, the amount of memory level parallelism may be overestimated. This in turn may lead to an underestimate of the performance loss due to data cache misses.. For example, Figure 1 compares actual component of CPI due to long latency data cache misses to the same quantity predicted as described in the next section for mcf. The first bar (actual) shows the result from a cycle-accurate simulator whose configuration is described in Section 4. The second bar (baseline) shows the result from a careful reimplementation of a previously proposed hybrid analytical model [Karkhanis and Smith 2004] . 1 The third bar (SWAM w/PH) illustrates the result from a new technique that we propose in this article (see Section 3.5.1). In this figure (and throughout the rest of the paper), the CPI component resulting from long latency data cache misses (CPI D$miss ) measures the total extra cycles due to long latency data cache misses divided by the total number of instructions committed. Figure 1 demonstrates that the underestimation is significant and the disparity grows with increasing memory latency.. A careful consideration of the impact of pending hits is central to our approach to modeling data prefetching. Taking account of pending hits improves our analysis of the number of misses that cannot be overlapped. We extend this analysis by proposing techniques to better select the cache misses that should be analyzed during each modeling step, further improving model accuracy. As the instruction window of future microprocessors becomes larger [Cristal et al. 2004 ], a limited number of Miss Status Holding Registers (MSHRs) can have a dramatic impact on the performance of the whole system [Tuck et al. 2006] . Modeling MSHRs requires additional consideration of which cache misses can be overlapped.. This article makes the following contributions.. -It explains why pending hits can have non-negligible impact for memory intensive applications and describes how to model their effect on performance in the context of a trace driven hybrid analytical model (Section 3.1). -It presents a novel technique to more accurately compensate for the potential overestimation of CPI D$miss in the context of the first-order superscalar model. This technique derives a compensation factor based upon individual program characteristics (Section 3.2). -It proposes a technique to model CPI D$miss when a data prefetching mechanism is applied in a microprocessor, without requiring a detailed simulator (Section 3.3). -It describes a technique to analytically model the impact of a limited number of outstanding cache misses supported by a memory system (Section 3.4). -It proposes two novel profiling techniques to better analyze overlapped data cache misses (Section 3.5). -It also evaluates of the impact of nonuniform memory access latency due to DRAM timing and contention on the accuracy of hybrid analytical models. This illustrates the need for further research on more accurate memory system analytical models (Section 5.8).. The proposed approach for modeling data prefetching is evaluated by using it to predict the performance impact of three different prefetching strategies and the average error of is shown to be 13.8% (versus 50.5% when pending hits are treated as normal hits). The proposed technique for modeling MSHRs reduces the arithmetic mean of the absolute error of our baseline from 33.6% to 9.5%. As with earlier hybrid modeling approaches [Karkhanis and Smith 2004; Karkhanis 2006; Karkhanis and Smith 2007] , we find our model is two orders of magnitude faster than detailed simulations. Our improvements increase the realism (and hence applicability) of analytical models for microprocessor designers. 1 Our analysis shows that pending data cache hits can significantly impact model accuracy. However, we note that the prediction error of the CPI due to long latency data cache misses we report for our baseline modeling technique (described in Section 2) is in some cases large relative to those reported in Karkhanis and Smith [2004] . Our baseline modeling technique is our implementation of the first-order model described in Karkhanis and Smith [2004] based on the details described in that paper and the follow-on work [Karkhanis 2006; Karkhanis and Smith 2007] . We believe the discrepancy is partly due to our use of a smaller L2 cache size of 128 KB versus 512 KB used in [Karkhanis and Smith 2004] , and partly due to their use of a technique similar to the one we describe in Section 3.5.1 [Karkhanis 2008] . The rest of this article is organized as follows. Section 2 reviews the first-order model [Karkhanis 2006; Smith 2004, 2007] . Section 3 describes how to accurately model the effects of pending data cache hits, data prefetching, and hardware that supports a limited number of outstanding data cache misses. Section 4 describes the experimental methodology and Section 5 presents and analyzes our results. Section 6 reviews related work and Section 7 concludes the paper. In this article, several improvements to an existing analytical performance model for superscalar processors are proposed and evaluated. A proposed technique for modeling pending data cache hits reduces error from 39.7% to 29.3% while a technique for selecting the beginning of profile windows reduces error further to 10.7%. Accounting for the impact of program characteristics on the overlap of computation and memory access error reduces error by 33.9% compared to fixed compensation techniques. The basic model can be extended to estimate the performance of a microprocessor when an arbitrary data prefetching method is applied. Moreover, a technique to quantify the impacts of a limited number of MSHRs is proposed. The average error is 13.8% when modeling several prefetching strategies and 9.5% when modeling a limited number of supported outstanding cache misses. This paper also explores the sensitivity of the modeling technique. As memory access latency and instruction window size varies the model achieves correlation coefficient of 0.9983 and 0.9951, respectively. Finally, the large impact of realistic memory access latencies (accounting for DRAM timing and contention) on the data memory access component of CPI is quantified and it is shown that a windowed average of memory latency can significantly reduce error. The later results suggest that future work should explore mechanisms to analytical model the impact of memory controllers on memory access latency. This section summarizes our experimental results. There exist many analytical models proposed for superscalar microprocessors [Noonburg and Shen 1994 , Ofelt 1999 , Michaud et al. 1999 , 2001 . A common limitation of early models is that they assume a perfect data cache. As the gap between memory and microprocessor speed increases, data cache misses must be properly modeled to achieve reasonable accuracy. Agarwal et al. [1989] present an analytical cache model estimating cache miss rate given cache parameters. However, in a superscalar, out-of-order execution microprocessor, the cache miss rate itself is not enough to predict the real performance of the program analyzed. Jacob et al. [1996] propose an analytical memory model that applies a variational calculus approach to determine a memory hierarchy optimized for the average access time given a fixed hardware budget with an (implicit) assumption that memory level parallelism does not occur. Noonburg and Shen [1997] present a superscalar microprocessor Markov chain model that does not model long memory latency. The first-order model proposed by Karkhanis and Smith [2004] is the first to attempt to account for long latency data cache misses. Our analytical model improves the accuracy of our re-implementation of their technique described in Section 2 (based upon details available in the literature) by modeling pending data cache hits, and extends it to estimate the performance impact of data prefetching techniques and a limited number of outstanding cache misses.. More recently, Eyerman et al. [2009] proposed a modification to the first-order model simplifying the analysis by examining the impact of miss events at the dispatch rather than issue stage. This formulation is useful in examining scaling relationships between different pipeline parameters and can be used to show that optimal performance is achieved at points where the pipeline depth times the square root of the pipeline width is a constant. The focus on pending hits, prefetching and miss status holding registers in this article is orthogonal. The use of SWAM profiling may capture benefits similar to profiling individual miss intervals.. Some earlier work has investigated the performance impact increasing the number of MSHRs using detailed simulations [Farkas et al. 1995; Belayneh and Kaeli 1996] . The hybrid analytical model that we propose can be used to estimate the performance impact of a limited number of MSHRs without requiring a detailed simulator.. Concurrent with our work, Eyerman [2008] proposed an approach similar to SWAM described in Section 3.5.1, except that the profile window slides to begin with each successive long latency miss. Reportedly, a pending hit compensation mechanism was used [Esckhout 2008] . To evaluate our analytical model, we have modified SimpleScalar [Burger and Austin 1997] to simulate the performance loss due to long latency data cache misses when accounting for a limited number of MSHRs. We compare against a cycle accurate simulator rather than real hardware to validate our models since a simulator provides insights that would be challenging to obtain without changes to currently deployed superscalar performance counter hardware [Eyerman et al. 2006] . We believe the most important factor is comparing two or more competing (hybrid) analytical models against a single detailed simulator provided the latter captures the behavior one wishes to model analytically. Table I describes the microarchitectural parameters used in this study. Note that we are focusing on predicting only the CPI component for data cache misses using our model. Hence, our comparisons in Section 5 is to a detailed cycle accurate simulator in which instruction cache misses have the same latency as hits and all branches are predicted perfectly. In the rest of this paper, we focus on how to accurately predict CPI D$miss , which is the performance loss due to long latency data cache misses when both branch predictor and instruction cache are ideal (this is the same methodology applied to model CPI D$miss described in Karkhanis and Smith [2004] ).. To evaluate the technique proposed in Section 3.3 for estimating the CPI D$miss when a prefetching mechanism is applied, we have applied our modeling techniques to predict the performance benefit of three different prefetching mechanisms: prefetch-onmiss [Smith 1982 ], tagged prefetch [Gindele 1977] , and stride prefetch [Baer and Chen 1991]. When prefetch-on-miss [Smith 1982 ] is applied, an access to a cache block that results in a cache miss will initiate a prefetch for the next sequential block in memory given that the block is not in the cache. The tagged prefetch mechanism [Gindele 1977 ] adds a tag bit to each cache block to indicate whether the block was demandfetched or prefetched. When a prefetched block is referenced, the next sequential block is prefetched if it is not in the cache. The stride prefetch technique [Baer and Chen 1991] uses a reference prediction table (RPT) to detect address referencing patterns. Each entry in the RPT is assigned a state and a state machine is applied to control the state of each entry. Whether a prefetch is initialized or not depends on the current state of the entry [Baer and Chen 1991] . In this study, we modeled a 128-entry, 4-way RPT that is indexed by the microprocessor's program counter (PC). To stress our model, we simulate a relatively small L2 cache compared to contemporary microprocessors. We note that the size of the L2 cache that we simulated is close in size to those employed in microprocessors shipped at the time when those benchmarks we use were released. The benchmarks chosen are ones from SPEC 2000 [Standard Performance Evaluation Corporation] and OLDEN [Carlisle 1996 ] that have at least 10 long latency data cache misses for every 1000 instructions simulated (10MPKI). Table II illustrates the miss rates of these benchmarks and the labels used to represent them in figures. Moreover, for each benchmark, we select 100M representative instructions to simulate using the Sim-Point toolkit [Sherwood et al. 2002] .. In this article, we use arithmetic mean of the absolute error to validate the accuracy of an analytical model, which we argue is the correct measure since it always reports the largest error numbers and is thus conservative in not overstating the case for improved accuracy. Note that we are interested in averaging the error of the CPI prediction on different benchmarks, not the average CPI predicted for an entire benchmark suite, which often allows errors on individual benchmarks to "cancel out" in a way that suggests the modeling technique is more accurate than it really is. We also report the geometric mean and harmonic mean of the absolute error to allay any concerns that these numbers might lead to different conclusions. In all cases the improvements resulting from applying our new modeling techniques are robust enough that the selection of averaging technique does not impact our conclusions.

O B I O O O O B I O O O O O O O O O B O O O O O O O O B I I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O B I O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


On Constructing Minimal Formulae Given a Boolean propositional formula, ϕ(X n ) over the basis Ω = {∧, ∨, ¬} we consider the following decision problem: is there a subset of literals, S, for which ϕ(X n ) ≡ y∈S y or ϕ(X n ) ≡ y∈S y? We prove that the "obvious" Σ p 2 upper bound is sub-optimal and that the problem is decidable in P NP || the class of languages decidable by polynomial time methods allowed to make non-adaptive queries to an NP oracle. We further show that the associated function problem of computing a witnessing such subset when one exists can be solved in FP NP || . A long-standing problem in computational complexity theory concerns how difficult it is to determine whether a given propositional formula, ϕ(X n ), can be rewritten as an equivalent formula, ψ(X n ), whose size is strictly smaller. Here the size of a formula is interpreted as the number of occurences of literals -x and ¬x -in the formula's specification. This problem was studied by Hemaspaandra and Wechsung [11, 12] who obtained the first non-trivial lower bounds on its complexity. These establish that, in its most general form, Minimal Expression Equivalence (MEE) is P NP || -hard. To date, however, no improvement to the obvious Σ p 2 upper bound has been obtained, i.e. the approach which given an instance ϕ, k of MEE, proceeds by guessing a formula ψ of size at most k and accepts if and only if ϕ ≡ ψ.. In this note, although we do not obtain improved bounds for the general MEE problem, we are able to show that a related problem, in which the structure of witnessing equivalent formulae is very tightly constrained, can be decided in P NP || . Furthermore our proof of this upper bound immediately yields an algorithm for constructing such a set: this algorithm places the related search problem in the function class FP NP || . The exact variant of MEE we consider will be called Term Equivalence (TE) and is defined as follows: In this note we have considered a variant of the Minimal Expression Equivalence problem (MEE) studied by Hemaspaandra and Wechsung [11, 12] whereby the form of witnessign smaller formulae is restricted to elementary conjunctions and disjunctions. Our main result shows this variant can be decided in P NP || (with the search form belonging to the analogous function complexity class). This class has been shown to provide a lower bound for the general MEE problem. One feature of interest in our proof is the range of technical material originating from recent work on extension-based semantics in argument systems, in particular the correspondence between ideal sets and witnessing subsets of literals in the so-called ideal graph derived from a given formula. One of the original applications of argument system semantics was in modelling problems in non-classical logics (as opposed to the propositional basis of the current article). It would, therefore, be of some interest to see to what extent further interaction between argumentation semantics and algorithms for deciding properties of propositional formulae is possible.

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


A General-Purpose Finite-Volume Advection Scheme for Continuous and Discontinuous Fields on Unstructured Grids We present a new general-purpose advection scheme for unstructured meshes based on the use of a variation of the interface-tracking flux formulation recently put forward by O. Ubbink and R. I. Issa (J. Comput. Phys. 153, 26 (1999)), in combination with an extended version of the flux-limited advection scheme of J. Thuburn (J. Comput. Phys. 123, 74 (1996)), for continuous fields. Thus, along with a highorder mode for continuous fields, the new scheme presented here includes optional integrated interface-tracking modes for discontinuous fields. In all modes, the method is conservative, monotonic, and compatible. It is also highly shape preserving. The scheme works on unstructured meshes composed of any kind of connectivity element, including triangular and quadrilateral elements in two dimensions and tetrahedral and hexahedral elements in three dimensions. The scheme is finite-volume based and is applicable to control-volume finite-element and edge-based node-centered computations. An explicit-implicit extension to the continuous-field scheme is provided only to allow for computations in which the local Courant number exceeds unity. The transition from the explicit mode to the implicit mode is performed locally and in a continuous fashion, providing a smooth hybrid explicit-implicit calculation. Results for a variety of test problems utilizing the continuous and discontinuous advection schemes are presented. c 2002 Elsevier Science (USA) The development of accurate, conservative, monotonic, compatible, shape-preserving numerical advection schemes has been the subject of intense study for several decades. Despite this effort, the quest for improved techniques continues. Leveque [5] provides an extensive survey of the literature on this topic. Let us begin our discussion here with some definitions. In this paper conservative denotes an advection scheme that guarantees no loss of conserved quantities, such as mass, in the operation of moving material from one conservation volume to another under the action of advection. We use the modifier monotonic to denote an advection operator or scheme, which does not produce any unphysical extrema in the updated density field. This property is also sometimes referred to as total variation diminishing, or TVD. Similarly, we use the modifier compatible to denote an advection operator or scheme which does not produce any unphysical extrema in the updated massspecific or "mixing ratio" quantities, such as specific internal energy or velocity. Finally, we use the modifier shape preserving to refer to a scheme that minimizes the distortion of the shape of features in the conserved field in multidimensional flows. An advection scheme that is shape preserving is sometimes also said to provide corner coupling. This typically means that material from a given donor cell is transported, in a single application of the advection scheme, to a neighboring cell, or "corner cell," which has only a vertex in common with the donating cell. Doing this corner-cell transport correctly leads to shape preservation. All of these characteristics are essential for accurate Eulerian flow physics simulation schemes. Our goal here is to provide an advection scheme that is conservative, monotonic, compatible, and shape preserving for the cases of both continuous and discontinuous density fields in an integrated treatment. Furthermore, our goal is also to provide this scheme for unstructured grids. An example of the continuous-field case emerges in the simulation of a low Mach number compressible gas flow where the mass density fields, for example, are smooth continuous functions of space. An example of the discontinuous case would be the simulation of a free surface flow such as the sloshing of a liquid in a partially filled tank. Such an integrated scheme would be an attractive candidate in many of today's general-purpose flow simulation software, particularly those that address multimaterial and multifield flow problems.. Thus, we present in this paper a new general-purpose advection scheme for unstructured meshes based on the use of an interface-tracking flux formulation recently put forward by Ubbink and Issa [10] , in combination with an extended version of the flux-limited advection scheme of Thuburn [8] , for continuous fields. In what follows, we provide a brief review of the key features of the methods of Thuburn and Ubbink and Issa. Following this, we outline our scheme and then provide results on a variety of advection examples to show its accuracy and robustness. The examples include continuous-field advection, interface tracking, and explicit-implicit advection on quadrilateral and triangular element grids (all treated internally as unstructured grids). We conclude with a discussion of future work, including an outline of the use of our scheme in a continuous-remapping, LagrangianEulerian scheme to accommodate right-hand-side physics. The motivation for the work presented in this paper was to develop an accurate generalpurpose advection scheme for unstructured, as well as structured, meshes for both continuous and discontinuous fields. For the case of continuous-field advection, fluxed quantities are computed from an upstream, time-centered evaluation of the reconstructed field based on node data and node-centered gradients. The use of our extended version of Thuburn's limiter ensures monotonic and compatible future values of mass and mass-specific quantities. This scheme has been determined to have second-order convergence on quadrilateral and triangular element meshes. For discontinuous fields, two variations of the UbbinkIssa [10] method have been developed. The first is a fully explicit scheme that combines our continuous-field face quantities with those obtained by the compressive difference scheme. These are then limited with our extended Thuburn limiter. In the second variation, we solve for the face flux quantities using Ubbink and Issa's Crank-Nicolson formulation but follow this with an a posteriori application of our extended version of Thuburn's limiter instead of their iterative correction scheme to enforce monotonicity. This ensures only one linear solution per time step. Both methods have been shown to do quite well on both quadrilateral and triangular element meshes. Of particular note was the ability of our explicit scheme to out-perform all other methods except for Young's method on the vortical shear flow problem on quadrilateral element meshes. This is extremely promising, particularly for a method that does not use directionally split advection nor interface reconstruction.

O O O B O O O O O O O B I O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B B I O O B O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B


Mixing local and global information for community detection in large networks The problem of clustering large complex networks plays a key role in several scientific fields ranging from Biology to Sociology and Computer Science. Many approaches to clustering complex networks are based on the idea of maximizing a network modularity function. Some of these approaches can be classified as global because they exploit knowledge about the whole network topology to find clusters. Other approaches, instead, can be interpreted as local because they require only a partial knowledge of the network topology, e.g., the neighbors of a vertex. Global approaches are able to achieve high values of modularity but they do not scale well on large networks and, therefore, they cannot be applied to analyze on-line social networks like Facebook or YouTube. In contrast, local approaches are fast and scale up to large, real-life networks, at the cost of poorer results than those achieved by local methods.In this article we propose a glocal method to maximizing modularity, i.e., our method uses information at the global level, yet its scalability on large networks is comparable to that of local methods.The proposed method is called COmplex Network CLUster DEtection (or, shortly, CONCLUDE.) It works in two stages: in the first stage it uses an information-propagation model, based on random and non-backtracking walks of finite length, to compute the importance of each edge in keeping the network connected (called edge centrality.) Then, edge centrality is used to map network vertices onto points of an Euclidean space and to compute distances between all pairs of connected vertices. In the second stage, CONCLUDE uses the distances computed in the first stage to partition the network into clusters.CONCLUDE is computationally efficient since in the average case its cost is roughly linear in the number of edges of the network. Testing on diverse benchmark datasets shows good results, both in times and quality of the clustering; that is the case for synthetic networks with well-defined clusters as well as for real-world network instances. In a network, the term community structure indicates the presence of groups of vertices called communities or clusters such that there is a large number of edges connecting vertices inside the same community and few edges linking vertices located in different clusters [17] . For a given network, represented by a graph G = V, E where V is the set of vertices and E the set of edges, the community detection problem consists of finding a partition of the vertices in V of the form C = {C 1 , . . . , C q } such that each C i , 1 ≤ i ≤ q exhibits the community structure described above.. The detection of clusters in large graphs is becoming a central research problem in a variety of different areas including VLSI design, parallel computing, computer vision and social network analysis [17] . Such an interest depends on the fact that many real-world systems consist of separated modules that interact with each other. If modules are clearly identified, it is then possible to understand the role each module plays in the overall behavioral dynamics of the system, and to study how potential changes in the structure and functions of a module would impact the overall system. As an example, in the biological domain community detection algorithms have been deployed to clarify the functioning of metabolic networks [26] or to understand how some proteins interact in small groups (or subsystems) called 'modules,' or forming so-called complexes [46] . In Computer Science and Sociology, community detection algorithms have been exploited to understand the social structures arising from the interactions of single individuals; this has relevant practical applications, for instance in customer segmentation.. Early methods for finding communities were rooted in graph theory, e.g., the principle of maximum flow and minimum cut [17] . The main limitation of these methods is their high computational cost, which restricts their applicability to toy models or small instances (e.g., samples) of real-world networks.. Recently, attention is increasingly paid to spectral clustering methods [28, 40, 44, 48] , which strive to optimize suitable cost functions. Empirical analysis provides evidence that spectral clustering methods are able to achieve excellent performance in some domains, e.g., image segmentation. Most of the spectral clustering methods are parametrized to the desired number of clusters, denoted by an integer k. In many cases, spectral clustering methods tend to produce clusters of (almost) equal size. However, in a broad range of application domains, such features have been considered as serious drawbacks, especially since often there is no available information to correctly tune k. In addition, the identification of equally-sized clusters contradicts some well-known facts about real social networks: the size of communities greatly varies, ranging from few communities gathering a large number of individuals, to many communities containing only few participants [8, 9, 41] .. A breakthrough in community detection has been the introduction of a cost function called network modularity (or, in short, modularity, usually denoted as Q); it is based on the edge density in a graph for any candidate partition. In the latest years, several algorithms that try to maximize Q have been designed, see, e.g., [4, 8, 14, 37] .. Empirical studies carried out by Newman and Girvan [37, 39] on a wide variety of artificial and real networks highlighted a correlation between high values of modularity and the actual community structure of a network. As a further empirical result, Newman and Girvan proved that real-world networks endowed with a clear community structure have their Q measure ranging from 0.3 to 0.7. That means that the task of maximizing Q is instrumental to disclose the community structure of a network and this is perhaps the main reason for its widespread adoption and the success of approaches that maximize modularity.. Unfortunately, the maximization of Q poses two main challenges. First of all, the Q function is defined over all the vertices of the graph G and, therefore, to maximize it we should take into account the whole network topology. Approaches based on the knowledge of the whole network structure are defined as global approaches. Among them, we cite the Girvan-Newman algorithm [21] (which is to the best of our knowledge the first algorithm that attempt to maximize Q), the method based on information centrality [19] and several others (please see [17] for a survey). The worst-case time complexity of global approaches is, unfortunately, very high. Thus, these strategies cannot be successfully applied on very large networks comprising millions of vertices and billions of edges.. In contrast, another family of approaches considers local information, like the knowledge of the neighbors of each vertex to perform graph clustering. These are called localapproaches and one of the best-known is Louvain Method -LM [4] . In general, these approaches use greedy strategies to maximize Q and, therefore, they may get trapped into local optima and, ultimately, fail to discover the actual community structure of a graph.. In this article we both define a methodology for clustering graphs which couples the accuracy of global approaches with the computational performances guaranteed by local methods and, at the same time, mitigates the resolution limit effect. The proposed approach is called COmplex Network CLUster DEtection or, shortly, CONCLUDE.. CONCLUDE works in two stages: in the first one, it maps graph vertices onto points of an Euclidean space and it computes the pairwise distance among them by exploiting a Euclidean-like distance metric. In the second stage, it adopts distances between points as a guide to perform clustering.. In the first phase, in order to map graph vertices onto points, CONCLUDE relies on the concept of κ-path centrality [11, 12] . The κ-path edge centrality of an edge is defined as the probability that the edge is selected to spread information in the network; such probability is computed by a suitable process of information diffusion simulated by the algorithm over the network itself. The concept of κ-path edge centrality fits quite well with our intuitive, experience-based notion of community: groups of individuals who frequently exchange information each other while the possibility that an information goes out from the community should be regarded as an unlikely event. Finding edges with high centrality is equivalent to disclosing preferential channels along which information flows and, ultimately, this is useful to reveal communities of individuals.. The definition of κ-path centrality is based on an information propagation model in which we assume that a message (representing a basic piece of information) is injected in an arbitrary vertex of the network and it flows along random, non-backtracking paths of length up to κ. This model is justified by the fact that users are treated in an equally fashion and, therefore, each user is allowed to generate and spread a message. In addition, each user has only a partial knowledge of the network topology and, in particular, she is only aware of her neighborhood. For these reasons, the propagation path followed by a message is unpredictable because each user can decide on her own the person to which a message has to be forwarded and, therefore, such a path can be intended as randomized.. The other assumption is that paths are non-backtracking. In fact, we understand that a user wants to maximize the number of persons getting the message and, therefore, she has no interest in contacting her sources. Finally, since distant users are not likely to influence each other, propagation paths are also required to be of bounded length.. The computation of κ-path edge centrality of an arbitrary edge is computationally demanding since it should consider all paths containing the given edge and, in principle, there could be exponentially-many such paths (in the number of vertices of the graph). We propose here a heuristic algorithm, called ERW-Kpath (Edge Random Walk κ-path Centrality), to efficiently compute edge-centrality values.. Once κ-path centrality values have been computed, CONCLUDE proceeds to compute the distance between each pair of connected vertices. Such a definition is based on the principle of structural equivalence [47] : two vertices i and j are considered close if their neighbors are close too. In particular, a vertex k which is a neighbor of both i and j is assumed to be close to both i and j if the probability that a message flows from k to i is comparable to the probability that it flows from k to j. If these probabilities are large enough, then a message received by k will be forwarded, with high probability, to both i and j. Vice versa, if these probabilities are small enough, then a message received by k is not likely to be forwarded to i and j. The probability that a message flows from the vertex k to the vertex i (resp., j) coincides with the centrality of the edge linking k to i (resp. to j.). After the mapping has been performed and weights are in place, in principle we can follow it up with any off-the-shelf local algorithm for detecting communities in graphs. In this article we discuss clustering by the Louvain Method described above, as we found it particularly suitable to be embedded into our CONCLUDE algorithm.. According to the discussion above, we can notice that CONCLUDE advances the state of the art in a number of directions:. • In order to compute the edge centrality values, we use non-backtracking random walks of finite length κ. The value of κ can be fixed in an arbitrary fashion and, for large values of κ (e.g., for κ in the same order of magnitude of the graph diameter) our walks allow to explore portion of the graph which are quite far from each other. In this respect, the κ-path edge centrality has to be intended as an information at the global level because the horizon of the walker encompasses the whole graph. Interestingly, the simulation of such random walks require to select at random the starting vertex and, for each selected vertex, the walker is asked to know the neighbors of that vertex. In this way, the walker is not required to know in advance the whole graph topology nor to store it.. • Our analysis shows that the worst-case time complexity of CONCLUDE is near linear in the number of edges in the graph. This makes our approach computationally competitive and its performance is comparable with those of local algorithms.. • According to our definition of distance, given three (or possibly more) vertices i, j and k, these vertices are mapped onto close points if, when one of the three receives a message, then such a message is conveyed with high probability to the other two vertices. In this way, a group of vertices that forms a community is mapped onto a dense region of an Euclidean space. This ultimately makes the process of identifying communities more effective.. • In the computation of distances, we used edge centrality as weights on edges. As outlined above, the procedure of weighting edges is, in general, beneficial to reduce the resolution limit problem. In a previous work [11] , we showed that the usage of edge centrality in conjunction with some clustering algorithms raises the accuracy of these algorithms in comparison of that computed without exploiting weights on edges. This article, however, differs from our previous work because in [11] we used a weighting procedure on edges to improve the accuracy of the clustering process. In this article, instead, we use edge centrality to compute distances between pairs of vertices and, as a final outcome, to map graph vertices onto points of a Euclidean space. Such a mapping is interesting per se because a wide range of complex analysis tasks are allowed (like finding the k-nearest neighbors of a vertex).. Performance and scalability of CONCLUDE have been assessed through experiments and benchmarking both real and artificial network datasets. In particular, we considered 6 real-world datasets where the largest, a sample from Facebook, consists of 63,731 vertices and 1,545,684 edges. We compared the modularity achieved by CONCLUDE clustering against the results of well-known algorithms such as the Louvain Method alone, COPRA [25] and OSLOM [30] . As for synthetic (artificially-generated) networks, we used the LFR benchmark [29] to generate 72 networks whose community structure was known in advance. We compared communities found by CONCLUDE with the actual ones by using the so-called Normalized Mutual Information measure from Information Theory [9] . Finally, to make the algorithm available for the research community, an implementation of CONCLUDE can be now freely obtained 1 .. The outline of the article is as follows: in Section 2 we provide a detailed discussion of main methods in literature to find communities in networks based on the principle of modularity maximization. In Section 3 we provide the definition of κ-path centrality and describe our ERW-Kpath algorithm. The main features of CONCLUDE are covered in Section 4 whereas an in-depth experimental analysis of CONCLUDE performance is discussed in Section 5. Finally, in Section 6 we draw our conclusions. This article presents CONCLUDE, an efficient method for detecting clusters in complex networks which is proven to work well in different domains. An early implementation of this algorithm has been already released and its strengths and performance might be assessed independently by other authors.. Our ongoing research efforts focus on adopting CONCLUDE in several contexts. We are investigating: (i) the emergence of a community structure in large online social networks such as Facebook [15, 16] ; (i) the assessment of sociological conjectures that involve finding clusters according to importance of edges, for example the strength of the weak ties theory [24] , and (iii) enhancing the performance of different state-of-the-art clustering algorithms (such as COPRA [25] or OSLOM [30] ) by pre-processing networks by means of the random walk based measure of centrality like the κ-path edge centrality [11] .. Finally, a long-term research evaluation of our method is planned, in order to cover different domains of application: for example, the application of CONCLUDE could be promising in the context of Neuroinformatics, applied to the connectome (i.e., the human brain functional network) [33] or Bioinformatics, to detect protein complexes in proteininteraction networks [36] .. Further extensions of CONCLUDE will be designed to face additional scientific challenges, such as the possibility of discovering overlapping clusters. So far, our algorithm is able to produce a strong partition of the network, but does not allow partitions to overlap each other. This feature will be instrumental in some contexts in which is meaningful that nodes contemporary belong to different clusters (for example, in the case of social networks, users might be part of different communities at the same time.) In this section we first describe approaches to finding communities based on the principle of maximizing the network modularity [21] (in Section 2.1.) Next, we discuss the shortcomings associated with the maximization of this function and illustrate some strategies to cope with them (Section 2.2.)

O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O