{'fraction_non_alphanumeric': 0.016740088105726872, 'fraction_numerical': 0.0, 'mean_word_length': 5.346368715083799, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Large-Scale Speculation for the Thread-Level Parallelization

We have been developing a multiprocessor architecture which creates speculative threads from a sequential program and executes them in parallel. In this architecture, we aim at the large-scale speculation which supports the execution of speculative threads of arbitrary size and duration. So, our system must be able to analyze the dependency on large amounts of memory data. In this paper, we describe the outline of the current design of our architecture and the mechanism for dynamic inter-thread dependency analysis, memory renaming, and speculative data management in detail. These mechanisms not only enables the large amount of speculative data to be maintained, but also reduces speculation overheads. We also investigate how much dependency between coarse-grain threads there are found in practical application programs and estimate the possibility of the parallelization with our speculation architecture. Our memory renaming mechanism can remove most of hazards due to the dependencies, and value prediction is promising to remove the large part of the remain.