coarse - grained and fine - grain memory accesses are defined by relative sizes of the data widths . for example , coarse - grained memory accesses can involve data width greater than 32 bytes , while fine - grained memory accesses can have data width less than or equal to 8 bytes . the disclosed methods adaptively adjust shared address and data pins in multi - core processors according to the ratio of data and address flows . the disclosed multi - core processors can adaptively reduce address flow when the computation programs mainly involve coarse - grained memory accesses , and can increase address flow when the computation programs include fine - grained memory accesses . the disclosed methods dynamically assigns pins with data or address functions according to the needs of computation program during runtime , which achieves high effective bandwidth utilizations in both coarse - grained accesses such as scientific computing applications , and find - grained accesses such as cloud computing or transaction - processing applications . in the present disclosure , the term “ processor core ” refers to the smallest hardware unit in a multi - core processor that can process independent instructions in an instruction pipeline . the term “ memory chip ” refers to one or more banks of memory units outside of a processor core . a memory chip includes control logics for the columns and rows of memory units . the one or more banks of memory units share the same set of pins in communication with the processor core . the term “ memory controller ” refers to a circuit for controlling data streams that flow in and out of the memory chip . a memory controller also interprets address information issued by the processor core , buffers and adjusts memory access commands from the processor core ( s ), and issues read / write commands to a memory chip . the memory controller typically resides in the multi - core processor . the term “ memory access ” refers to the commands issued by the memory controller in the multi - core processor to read from or write to the external memory chip . in some embodiments , the disclosed methods divide address and data pins of the processor - memory interface into several groups , each group of pins can perform data transfer or issue address information at any given clock cycle . the memory controller buffers memory requests from different processor cores in queues , aligns the memory requests to specific pins , and aggregates multiple memory access requests into bundled memory access requests in accordance with the pin groups . since multiple memory accesses may be related to different addresses in a memory chip , the memory controller issues addresses to the shared pins in address cycles inserted before the respective memory access commands in the memory access sequence . at each cycle , the memory controller determines whether the address pins or the data pins of the memory chips are connected to the shared pins of the processor , and switch between address and data transfers accordingly . the memory controller is also responsible for decomposing the data retrieved from the memory chip , and sending them back to corresponding processor cores according their requests . in the disclosed methods , when the processor cores request mainly coarse - grained memory accesses , the memory accesses are not aggregated , and the shared pins rarely transfer address information . the bandwidth utilization is similar to that of single memory controller with coarse - grained accesses . if the processor cores requests mostly fine - grained memory accesses at distributed memory addresses , address cycles are inserted into the command sequence and the bandwidth utilization is similar to that of multiple memory controllers with fine - grained accesses . the disclosed methods can therefore adaptively adjust the ratio of data transfer rate and address issue rate . the disclosed methods can include one or more of the following steps : 1 ) the memory controller in the multi - core processor buffers memory requests from different processor cores in queues specific to different shared pins , and aggregates multiple memory accesses into a bundle . 2 ) the memory controller needs to issue multiple addresses through these shared pins ahead of time , i . e . inserting address cycles in the originally consecutive memory access commands . 3 ) the processor determines whether the address pins or the data pins of the memory chips are connected to the shared pins of the processor , and accordingly switches between address information issuing and data transferring . 4 ) the retrieved data is decomposed and returned to corresponding processor cores . in some embodiments , in a first method , the internal structure and timing constraints of the memory chips ( e . g . ddr 3 ) are preserved . at every cycle , the memory controller dynamically switches between a single - issue coarse - grained mode and a multi - issue fine - grained mode according to the granularity of the memory access requests . 1 . the memory controller inside processor groups every 8 pins into a pin group , which corresponds to a memory chip . for example , the minimum granularity is set to be 8 bytes for ddr 3 memory chips that has a fixed burst length of 8 . the memory controller sets up an independent queue for coarse - grained memory requests , for example , those with memory access granularity equal or greater than 32 bytes . their addresses are issued through specialized pins intended for addresses like the existing system . the memory controller sets up a queue for each pin . the memory controller aggregates fine - grained memory accesses into bundled memory accesses . in some embodiments , memory accesses having moderate granularity between the fine - grained and coarse - grained memory accesses ( e . g . greater than 8 bytes but smaller than 32 bytes ) can decomposed into multiple fine - grained accesses with granularity at 8 bytes . the memory controller alternately selects coarse - grained accesses and fine - grained accesses , and issues corresponding commands to the memory chip . 2 . at any given cycle , the shared pins and buses are only used as either for data or for address transfers . an originally consecutive data transfer may be appended by additional address cycles to allow memory access requests to be inserted . fig1 a shows a timing diagram for multiple consecutive reads in a conventional peripheral multiplexer circuit including a latch between a memory controller and a memory chip . abus refers to the address bus between the memory controller and the memory chip ( s ). dbus denotes the data bus . cl is the latency between column selection and data transfer . fig1 b shows a timing diagram of multiple consecutive reads with in the presently disclosed methods . abus represents the address bus of memory chips . da bus denotes the shared bus . the shared bus latches the inserted address at the inserted address cycles , and issues the latched address at the next two system cycles . in some embodiments , referring to fig1 b which shows a timing diagram of consecutive reads with fine granularity in a peripheral multiplexer circuit including a latch , the row selection signal of the ( i + 1 )- th access and the column selection signal of the ( i − 1 )- th access are set at neighboring cycles , stored by the latch , and issued approximately two cycle later onto mabus from the latch to the address pins of the corresponding memory chips . the switches between read and write cycles in ddr 3 include latencies and time skews of rising and falling edges between the memory controller and the memory chips . therefore , the trigger edges of the input of the latch should align with the current data bus edges at the inserted two address cycles , while the output edges should align with the edges of the address bus of the memory chips . 3 . the processor determines whether the address pins or the data pins of the memory chips are connected to the shared pins of the processor , and accordingly switches between issuing address and data from the processor . the data pins and address pins are shared , in contrast to data pins and address pins assigned with distinctly separate tasks in conventional system . one or more peripheral latches and ( de -) multiplexers are implemented between the memory chips and the memory controller . the existing address bus is preserved for coarse - grained accesses . for bundled memory access requests aggregated from fine - grained accesses , different addresses are issued for different groups of pins and store the addresses in latches , which are subsequently sent to corresponding memory chips in accordance with the timing diagram above . extra control signals are required to manage the ( de -) multiplexers . referring to fig2 , a peripheral logic circuit 200 includes a data multiplexer 220 , an address de - multiplexer 240 , and a latch 230 for controlling memory accesses between a memory controller 210 and one or more memory chip ( s ) 250 . the memory controller 210 and the data multiplexer 220 are connected via a data bus da bus . the data multiplexer 220 has an input din connected to da bus , an output pin dout_a connected to the input of the latch 230 , and another output dout_b connected to the data pins of memory chip ( s ) 250 . the latch 230 is connected to an input din_b of the address de - multiplexer 240 . the address de - multiplexer 240 has another input din_a connected to the memory controller 210 via address bus abus . the address de - multiplexer 240 has output dout connected to the address pins of the memory chip ( s ) 250 via mabus . the memory controller 210 can issue additional select signal d_sel to the data multiplexer 220 and select signal a_sel to the address de - multiplexer 240 . the memory controller 210 is typically in a multi - core processor ( not shown ). the memory chip ( s ) 250 are outside of the multi - core processor ( not shown ). in some embodiments , the peripheral circuit can be integrated within the memory chips . when the memory chips 250 issues coarse - grained requests in addressing cycles via the address bus abus , d_sel switches the data multiplexer 220 to dout_b , therefore bypassing the latch 230 . a_sel selects din_a in the address de - multiplexer 240 , which connects the address bus abus to the memory chips 250 via mabus ( also bypassing the latch 230 ). for the coarse - grained memory requests , the data and address configurations are similar to existing multi - core memory systems . addresses are issued from independent address bus abus similar to the timing diagram in fig1 a . the peak data bandwidth is close to p . when the memory chips 250 issues fine - grained requests , referring to fig1 b and 2 , d_sel switches the data multiplexer 220 to dout_a and a_sel selects din_b , which directs the communications between the memory controller 210 and the memory chips 250 via the latch 230 . at a single address cycle , the latch 230 can receive a total of 32 bits address information at the four rising the falling edges ( double data rate ), which can include 19 bits for the ( i + 1 )- th row selection and 10 bits for the ( i − 1 )- th column selection . the latch 230 stores the address information and outputs them two clock cycles later . for the fine - grained memory requests , the memory access patterns are irregular and distributed . as shown in fig1 b and 3 , both address information and data in the fine - grained requests are transmitted through the da bus from the memory controller 210 to the data multiplexer 220 . the target address in the memory chip 250 is inserted in two address clock cycles (“ r ” and “ c ”) before their respective data clock cycles in the da bus . the address information is extracted by the data multiplexer and stored in in the latch 230 . the address information is sent from the latch 230 to the memory chip 250 via the address de - multiplexer 240 after a delay . data in the fine - grained requests is also extracted by the data multiplexer , and transmitted to the memory chip 250 in data clock cycles after the memory chips 250 are properly addressed by the address information . in this example shown in fig1 b , the peak data bandwidth is limited to a maximum of 0 . 67p ( 4 /( 3 + 3 )= 0 . 67 ). 4 . the retrieved data is de - composed and returned to corresponding processor cores . the issued requests are still stored in the memory controller 210 in a waiting state . when the data is returned in response to the bundled find - gained memory accesses , the memory controller 210 breaks the data according to the original requests from different processor cores , and sends data packets the registers in the corresponding processor cores . thus , each request is expected to contain information about the target memory addresses , operations , and the processor cores &# 39 ; identifications , registers identifications , etc . in some embodiments , a redundant checksum can be implemented as an error - correcting code ( ecc ) function for fine - grained memory accesses in the presently disclosed method to ensure quality of service . in some embodiments , a second method discloses a latch - free peripheral logic circuit to facilitate communication between memory controller and memory chips . without a latch , the peripheral logic circuit does not contain memory functions . the address information transferred the shared bus and the pins must strictly follow the timing sequence of the addresses in the memory chips . each memory chip requires at least 16 buses for the address selections of rows and columns . in one implementation , 16 pins of the processor are grouped in a pin group , which connects two memory chips , which can be called up - chip and down - chip . to make full use of the bandwidth capability , all up - chips are triggered by the system clock ck and data selection dqs ( data quality service ), the address information is latched at the rising edges ; all down - chips function at the counter system clock ck # and counter data selection dqs #, the address information is latched at the falling edges . fig3 shows two neighboring address cycles , the two rising edges r i + 1 , c i − 1 are respectively used to trigger the ( i + 1 )- th row selection and the ( i − 1 )- th column selection for the up - chips while the two falling edges r ′ i + 1 , c ′ i − 1 are used to trigger the ( i + 1 )- throw selection and the ( i − 1 )- th column selection for the down - chips . referring to fig5 , a latch - free peripheral logic circuit 500 includes a data multiplexer 520 , and an address de - multiplexer 540 that controls memory accesses between a memory controller 510 and one or more memory chip ( s ) 550 via mabus . unlike the first method , there is no latch in the peripheral logic circuit 500 . in some implementations , every 16 shared pins of the memory controller 510 are grouped and connected to the data multiplexer 520 , and in turn to the address de - multiplexer 540 and then to the data pins of the two memory chips 550 ( 8 for each ). in the address cycles , da bus is connected to the address de - multiplexer 540 which is selected by the a_sel signal to connect to the memory chip ( s ) 550 via mabus . in the normal data transferring cycles , da bus is selected by the d_sel signal from the memory controller 510 to connect to the data pins of the memory chips 550 . since 19 bits are required for row addresses and there are only 16 bits in a group , 3 bits are borrowed from the spare original address bus . if most of the requests are coarse - grained , the second method is similar to the first method or existing multi - core systems . fig4 a shows a timing diagram for multiple consecutive reads in a conventional peripheral multiplexer circuit without a latch between a memory controller and a memory chip , similar to that shown in fig1 a . addresses are issued from the memory controller 510 to the address de - multiplexer 540 via the independent address bus abus and then the memory chip 550 via mabus according to timing diagram in fig4 a . the peak data bandwidth is close to p . otherwise , if most of the memory - access requests are fine - grained , the access patterns are irregular and distributed . the operation procedure is executed according to timing diagram in fig4 b which shows a timing diagram of consecutive reads with fine granularity in a peripheral multiplexer circuit without a latch between a memory controller and one or more memory chips . three cycles are inserted before every data transfer burst . in this example shown in fig4 b , the peak data bandwidth is close to 0 . 57p ( 4 /( 3 + 4 )= 0 . 57 ). for fine grained memory access requests , memory access request having the same target addresses are bundled . both address information and data in the fine - grained requests are transmitted from the memory controller 510 through the da bus to the data multiplexer 520 . similar to the operations described above in relation to fig1 b and 3 , address information ( i . e . row and column selection signals ) are inserted before their associated data signals as shown in fig4 b . in addition , an idle cycle is inserted between the address clock cycles (“ r ” and “ c ” in fig4 b ) and read and write operations in the data clock cycles because the timing for the write command is a little ahead of the read timing in the memory chip ( s ). regardless whether it is a read or a write operation , the additional idle cycles assure that the up chip and the down chip are synchronized , and the addresses are issued strictly according to the chronicle sequence of the addresses in the memory chip ( s ). in some implementations , the memory chip ( s ) require a minimum of 5 clock cycles between selection and associated data transfer . in the second method , the address selections and the idle cycles increase the minimum number of cycles per data transfer to 8 . the timing of the addressing and data operations shown in fig4 b are controlled by d_sel and a_sel control signals from the memory controller 510 . in the address clock cycles , d_sel directs address information from dout_a of the data multiplexer 520 to the address de - multiplexer 540 . the address information ( e . g . column and row numbers ) is then sent to the memory chip 550 via mabus under the control of a_sel signal . one or more idle cycles are inserted . in the data clock cycles , d_sel switches the data multiplexer 520 to dout_b for read and write operations in the bundled memory access requests in communications with the memory chip 550 . the focuses of the above described methods are to provide solutions for coarse - grained and find - grained memory - access requests . for memory - access requests of moderate granularities ( e . g . data width from 8 bytes to 32 bytes ), the requests are broken down to fine - grained ones , which is simple to implement logically but also has the drawback of sending redundant addresses . in some embodiments , referring to fig7 , in a third method , a peripheral logic circuit 700 includes a data multiplexer 720 , and a memory manager 740 for controlling memory accesses between a memory controller 710 and one or more memory chip ( s ) 750 . the memory manager 740 performs the functions of buffering , recording , and issuing commands according to timing constraints . a unified address bus is no longer required and all addresses are issued through the da bus . all lines ( e . g . 64 lines ) of da bus are connected to the data multiplexer 720 . the data multiplexer 720 can direct the data or address information respectively to output dout_a or dout_b in response to the control signal d_sel issued by the memory controller 710 . dout_a is connected to the address input of the memory manager 740 . dout_b is connected to the data pins of the memory chips 750 . the output of the memory manager 740 is connected to the address pins of the memory chips 750 . memory - access requests of different data widths are queued up with each memory chip associated with a queue . a memory - access request can specify information about memory address , data width , and a write / read operation . the greedy algorithm is used to optimize compact memory accesses locally in order to achieve global optimum . referring to fig6 and 7 , the memory controller 710 identifies the first memory - access requests to the memory chips 750 in their respective queues , and aggregates them into the widest - possible bundled requests . if two memory - access requests include an overlap portion , the latter portion is separated and kept in the queue . in fig6 , each memory chip 0 - 7 is associated with a queue as indicated by a horizontal dashed line . the vertical lines running across different queues represent bundled requests . for example , the first vertical line on the upper left aggregates memory - access requests in the three queues associated with memory chips 0 , 1 , 2 . the memory - access requests illustrated are of a medium granularity ( i . e . the bundling is not across all memory chips or limited to a single memory chip ). each bundle of memory accesses needs to be issued with only one group of memory addresses in the memory chip . the number of memory addresses is equal to the number of request bundles ( not the number of memory - access requests ). because the memory manager 740 includes buffer function , bundled memory - access requests can be issued in consecutive address cycles by the memory controller 710 through the da bus to the memory manager 740 . at address cycles , d_el switches the data multiplexer 720 to dout_a . a batch of addresses are transmitted together and buffered in the memory manager 740 . after address transfer , the memory manager 740 issues the addresses to the memory chips 750 strictly according to timing constraints . d_sel then switches the data multiplexer 720 to dout_b for data transfers to and from the memory chips 750 . for memory access requests of moderate granularities , the memory manager 740 issues the same memory address simultaneously to all associated memory chips 750 in each bundled memory request . with such a batch operation , data transfer cycles are not interrupted by the address cycles . afterwards , the read and write data operations are also conducted in parallel ( simultaneously ) to and from the relevant memory chips 750 via the data multiplexer 720 . for a complete memory - access request , the memory controller 710 returns the acquired data to the appropriate processor cores that requested them . for the segmented memory - access requests , the memory controller 710 buffers different portions and recombines the data before the data is returned to the corresponding processor core . as a variant to the above described lock - step modes in the third method , a mixed - cycle mode can include part of the da bus designated for data transferring while the rest of the da bus used for issuing addresses to the memory manager . the bandwidth utilization of the third method is at least as good as the first and the second methods regardless it is in a coarse - grained mode or a fine - grained mode , while when there are memory - access requests with moderate granularities , its utilization could be slightly better than the above embodiments because of a reduce in address information issued from the processor . only a few examples and implementations are described . other implementations , variations , modifications and enhancements to the described examples and implementations may be made without deviating from the spirit of the present invention . for example , the disclosed system , methods , applications , and user interfaces can be implemented using hardware or software other than the examples described above . while this document contains many specifics , these should not be construed as limitations on the scope of an invention that is claimed or of what may be claimed , but rather as descriptions of features specific to particular embodiments . certain features that are described in this document in the context of separate embodiments can also be implemented in combination in a single embodiment . conversely , various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub - combination . moreover , although features may be described above as acting in certain combinations and even initially claimed as such , one or more features from a claimed combination can in some cases be excised from the combination , and the claimed combination may be directed to a sub - combination or a variation of a sub - combination . it will thus be seen that the objects of the present invention have been fully and effectively accomplished . its embodiments have been shown and described for the purpose of illustrating the functional and structural principles of the present invention and is subject to change without departure from such principles . therefore , this invention includes all modifications encompassed within the spirit and scope of the following claims .