The present invention relates to an information processing apparatus which includes a WideIO memory device stacked on a SOC die including a CPU, a control method thereof, and a program.
An existing information processing apparatus generally uses a DRAM (Dynamic Random Access Memory) so as to store data required to execute an OS and various applications, and to temporarily store data required to execute image processing. This DRAM is connected to a CPU, SOC, and the like when it is used. Also, upon multiple and advanced functions of the information processing apparatus in recent years, a memory band of the DRAM is increased. The memory band is increased by raising a clock frequency of data accesses in standards such as DDR3 or DDR4. Also, the band is allocated by providing a plurality of DRAM channels connected to a CPU and ASIC.
However, the arrangement using a higher clock frequency and a plurality of memory channels poses a new problem, that is, an increase in power consumption. Hence, “WideIO” as the next generation DRAM standard currently receives a lot of attention. The WideIO is a memory technology which uses a 3D stacking technique based on TSV (Through Silicon Via), and stacks a DRAM chip on a SOC die. As features of the WideIO, a data width as wide as 512 bits and a high-frequency band of a maximum of 12.8 GB/sec or more are used, and low power consumption is guaranteed since an access frequency is suppressed to low. Also, since the TSV is adopted, a package size can be reduced and smaller than the conventional PoP (Package on Package). As further detailed features, a temperature sensor is integrated as a countermeasure against heat due to stacking in a SOC package, and a self refresh rate is changed depending on the temperature. As still another feature, the data width (512 bits) is divided into four channels of 128 bits, and respective channels are independently controlled. For example, in one use method, channels 1 and 2 are set in a self-refresh state, and channels 3 and 4 are normally used. US Patent Application Publication No. 2012/0018885 has proposed a technique related to the basic structure and basic access method of such WideIO.
However, the related art suffers the following problems. The stacked structure of the WideIO is susceptible to heat in terms of the structure. For example, when a specific area of a die and a WideIO DRAM located on an upper layer portion of this specific area are simultaneously activated, the activated portion locally causes a temperature rise. Then, a semiconductor leak current, which exponentially rises with respect to the temperature, is increased, resulting in an increase in power consumption. Also, the DRAM stores data by storing charges in capacitors included in respective cells. Since this capacitor naturally discharges due to the semiconductor leak current, the DRAM is required to discharge the capacitors by a refresh operation. This discharge depends on the temperature, and a discharging speed is higher as the temperature is higher. Therefore, when the temperature rises, a refresh frequency is required to be increased, resulting in an increase in power consumption and an access performance drop of the DRAM caused by an inaccessible state of the DRAM during the refresh operation.
The present invention enables realization of a mechanism which lightens a local temperature rise due to an elapse of time, and reduces a refresh frequency and leak current of a DRAM.
One aspect of the present invention provides an information processing apparatus, which comprises a WideIO memory device stacked on a SOC die including a CPU, the apparatus comprising: accepting means for accepting a job; calculation means for calculating amounts of generated heat of respective areas of a plurality of areas of the SOC die when one or more function blocks required to execute the job accepted by the accepting means are operated; and memory control means for preferentially allocating a memory area of the WideIO memory device stacked on a corresponding area to the function blocks to be operated in accordance with an order of areas corresponding to smaller amounts of generated heat calculated by the calculation means.
Another aspect of the present invention provides a control method of an information processing apparatus, which comprises a WideIO memory device stacked on a SOC die including a CPU, the method comprising: controlling accepting means to accept a job; controlling calculation means to calculate amounts of generated heat of respective areas of a plurality of areas of the SOC die when one or more function blocks required to execute the job accepted in the controlling the accepting means are operated; and controlling memory control means to preferentially allocate a memory area of the WideIO memory device stacked on a corresponding area to the function blocks to be operated in accordance with an order of areas corresponding to smaller amounts of generated heat calculated in the controlling the calculation means.
Further features of the present invention will be apparent from the following description of exemplary embodiments with reference to the attached drawings.
Embodiments of the present invention will now be described in detail with reference to the drawings. It should be noted that the relative arrangement of the components, the numerical expressions and numerical values set forth in these embodiments do not limit the scope of the present invention unless it is specifically stated otherwise. Note that an MFP (digital multi functional peripheral) having a plurality of functions such as scan, printer, and copy functions will be exemplified below as an information processing apparatus including the WideIO according to this embodiment.
The overall arrangement of an MFP (digital multi functional peripheral) according to this embodiment will be described first with reference to
The CPU 101 controls the operation of this MFP 100 by executing a program, which is read out from an HDD 105 and is expanded onto a WideIO-SDRAM 113 by a boot program stored in a ROM 106. An operation unit 102 includes an input unit such as a keyboard and touch panel, and a display unit, accepts a user instruction, and displays a message for the user, processing results, and the like on the display unit. A network I/F 103 is implemented by, for example, a LAN card or the like, and exchanges device information and image data with an external device via the LAN 114. A modem 104 exchanges control information and image data with an external device via the public network 115. The HDD 105 is a hard disk drive, stores an OS, various application programs, and the like, and also stores input image data and the like. The ROM 106 stores the boot program and various data. The device I/F 107 connects the scanner 116 and printer engine 117, and executes transfer processing of image data between these scanner 116 and printer engine 117, and the system bus 118.
An edit image processor 108 executes various kinds of image processing such as rotation and zooming, color processing, trimming/masking, binary conversion, multi-value conversion, and blank paper determination of image data. A print image processor 109 applies image processing according to the printer engine 117 to image data to be output to the printer engine 117. A scan image processor 110 applies various kinds of processing such as correction, modification, and editing to image data input from the scanner 116. A RIP (Raster Image Processor) 111 rasterizes page description language (PDL) code data into image data. A WideIO controller 112 converts a memory access command from, for example, the CPU 101 and each image processor into a command interpretable by the WideIO-SDRAM 113, and accesses the WideIO-SDRAM 113. The WideIO-SDRAM 113 stores a program to be executed by the CPU 101, and provides a system work memory required for the CPU 101 to operate. Also, the WideIO-SDRAM 113 is an image memory used to temporarily store input image data. The system bus 118 connects the aforementioned respective units and the CPU 101, and transfers control signals, data, and the like.
<Arrangement of WideIO-SDRAM>
The structure of the WideIO-SDRAM 113 as a WideIO memory device according to this embodiment will be described below with reference to
A SOC die 201 includes, for example, the CPU 101, device I/F 107, RIP 111, image processors 108 to 110, and the like in the first embodiment. WideIO-SDRAMs 202 to 205 are stacked on the SOC die 201, and are connected to the SOC die 201 via through silicon vias (TSVs) 206. A maximum of four layers of WideIO-SDRAMs can be stacked according to a required memory capacity, and
<Arrangement of WideIO Controller>
The internal arrangement of the WideIO controller 112 according to this embodiment will be described below with reference to
SDRAMs 301 to 304 are four memories arranged in the WideIO-SDRAM 113, and respectively include dedicated interfaces, as shown in
A register I/F 313 accepts accesses from the CPU 101 via a register dedicated bus (not shown). A register 314 stores respective pieces of temperature information acquired by a temperature acquisition I/F 315 from the temperature sensors 309 to 312, and pieces of setting information of respective operation modes of the memory controllers 305 to 308, which are set by the CPU 101.
<Arrangement of Function Blocks>
The detailed arrangement of function blocks such as the operation unit 102, HDD 105, ROM 106, and device I/F 107, each of which includes an external I/F controller and external device, will be described below with reference to
<SOC Package>
The physical positional relationship between the WideIO-SDRAMs 202 to 205 and SOC die 201 in the SOC package 207 will be described below with reference to
The WideIO-SDRAM 113 is a memory stacked on the SOC die 201. In this embodiment, assume that respective devices of the SDRAMs 301 to 304 are stacked on upper portions of areas obtained by dividing the SOC die 201 into four to have a four-layered arrangement, as shown in
An address map indicating address areas allocated to the SDRAMs 301 to 304 will be described below with reference to
<Area Division>
The positional relationship between the devices of the SDRAMs 301 to 304 included in the WideIO-SDRAM 113 and areas obtained when the SOC die 201 is equally divided into 6×6 areas will be described below with reference to
<Allocation of Areas>
A table 801 which indicates to which of the divided areas 702 in
Also, since the print image processor 109 is laid out over areas B8, C1, C2, C4, C5, and C6, and when it is operating, these areas are activated. Then, area B in
In this embodiment, an area with a small amount of generated heat is calculated upon execution of a predetermined job using the layout information of the respective areas and information of amounts of generated heat shown in
<Processing Sequence>
The processing sequence for deciding memory areas to be allocated to the image processors operated to execute a copy or print job when the CPU 101 accepts such job from the operation unit 102 or network I/F 103 will be described below with reference to
In step S902, when an execution job is input, the CPU 101 extracts function blocks activated upon execution of the job based on execution contents of the job. In step S903, the CPU 101 calculates amounts of generated heat of areas A to D shown in
Next, the CPU 101 decides an area with the smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and determines in step S904 whether or not a required memory size can be allocated from the WideIO-SDRAM channel included in that area. If the required memory size can be allocated, the process advances to step S905; otherwise, the process advances to step S906.
In step S905, the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used. On the other hand, if the required memory size cannot be allocated, the CPU 101 decides an area of the second smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and determines in step S906 whether or not a required memory size can be allocated from the WideIO-SDRAM channel included in that area. If the required memory size can be allocated, the process advances to step S907; otherwise, the process advances to step S908.
In step S907, the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used. On the other hand, if the required memory size cannot be allocated, the CPU 101 decides an area of the third smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and determines in step S908 whether or not a required memory size can be allocated from the WideIO-SDRAM channel included in that area. If the required memory size can be allocated, the process advances to step S909; otherwise, the process advances to step S910.
In step S909, the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used. On the other hand, if the required memory size cannot be allocated, the CPU 101 decides an area of the fourth smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and allocates an address area allocated to that WideIO-SDRAM channel as an area to be used in step S910.
In step S911, the CPU 101 sets the address area allocated by the processes of steps S904 to S910 in a register of each of the function blocks which use that memory, so that the function blocks use the memory of that address area. In step S912, the CPU 101 activates the function blocks, and then executes the job.
<Practical Example>
Details of the respective processes of
The ScanToBox job requires the following processing. That is, scan data input from the scanner I/F 407 is fetched onto the WideIO-SDRAM 113. After that, after the scan image processor 110 executes predetermined image processing, the data is stored in the SATA HDD 403 via the SATA controller 404.
In step S902, the CPU 101 extracts, as function blocks used by the ScanToBox job, the scanner I/F 407, WideIO controller 112, scan image processor 110, SATA controller 404, and CPU 101. Next, the CPU 101 calculates amounts of generated heat of areas A to D using this information and the table 801. When the function blocks extracted in step S902 are operated, areas A3, A6, A9, B1, B2, B4, B5, B7, D3, D4, D5, D6, D7, D8, and D9 are activated based on the information of the table 801. Therefore, in step S903, the CPU 101 calculates A=4, B=12, C=0, and D=11 as relative amounts of heat generated by areas A to D of the SOC die 201 upon execution of the ScanToBox job.
Since area C<area A<area D<area B are determined as areas in ascending order of amount of heat generated by the SOC die 201 upon execution of the ScanToBox job, whether or not a memory can be allocated is determined in this priority order, and the memory is allocated if it can be allocated in steps S904 to S910. For example, when a memory of area C can be allocated, the CPU 101 in step S911 allocates an area of address area 3 in
A case of the PDLPrint job will be described below. The PDLPrint job requires the following processing. That is, PDL data input from the network I/F 103 is fetched onto the WideIO-SDRAM 113. Next, the RIP 111 rasterizes vector data into raster data, and that data is stored in the SATA HDD 403 via the SATA controller 404. Then, the data is read out from the SATA HDD 403 via the SATA controller 404, and is stored again on the WideIO-SDRAM 113. Finally, after the print image processor 109 executes predetermined image processing, the data is output from the printer I/F 408 to the printer engine 117, thereby printing out the data.
In step S902, the CPU 101 extracts, as function blocks used by the PDLPrint job, the network I/F 103, WideIO controller 112, SATA controller 404, RIP 111, print image processor 109, printer I/F 408, and CPU 101. Next, the CPU 101 calculates amounts of generated heat of areas A to D using this information and the table 801. When the aforementioned function blocks are operated, areas A1, A3, A4, A5, A6, A7, A9, B1, B2, B4, B5, B6, B7, B8, B9, C1, C2, C4, C5, C6, C7, C8, and C9 are activated based on the information of the table 801. Therefore, in step S903, the CPU 101 calculates A=13, B=15, C=14, and D=0 as relative amounts of heat generated by areas A to D of the SOC die 201 upon execution of the PDLPrint job.
Since area D<area A<area C<area B are determined as areas in ascending order of amount of heat generated by the SOC die 201 upon execution of the PDLPrint job, the CPU 101 determines whether or not a memory can be allocated in this priority order, and the memory is allocated in steps S904 to S910. For example, when a memory of area D can be allocated, the CPU 101 allocates an area of address area 4 in
As described above, according to this embodiment, function blocks required to be operated to execute a job are extracted, and sum totals of amounts of heat generated upon activation of the respective areas used by the function blocks are calculated. Then, a memory area is preferentially allocated in turn from that of the WideIO-SDRAM corresponding to the small amount of heat. Thus, use of a WideIO-SDRAM channel included in the same area as the SOC area heated by activation can be avoided as much as possible to prevent an abrupt local temperature rise, thus reducing power consumption and suppressing a memory access performance drop.
That is, according to the present invention, when a certain area of the SOC die is activated, a WideIO channel to be used simultaneously with that area can be controlled to preferentially use a memory area of the DRAM, which are located at a position physically far from the area to be activated as much as possible. Thus, a local temperature rise due to an elapse of time can be lightened, and the refresh frequency and leak current of the DRAM can be reduced. Therefore, power consumption can be reduced, and an access performance drop of the WideIO DRAM can be suppressed as much as possible.
The second embodiment of the present invention will be described below with reference to
This embodiment will describe a priority setting method of a WideIO-SDRAM channel to be used upon execution of a plurality of jobs with reference to the flowchart of
In step S1001, the CPU 101 extracts function blocks to be activated upon execution of the input second conflict execution job. Subsequently, in step S1002, the CPU 101 calculates amounts of generated heat of areas A to D shown in
Next, the CPU 101 decides an area corresponding to the smallest amount of generated heat, and determines in step S1004 whether or not a memory size required for an SDRAM channel can be allocated from a WideIO-SDRAM channel included in that area. If the memory size can be allocated, the process advances to step S1007, and the CPU 101 determines whether or not that SDRAM channel is the same as that of an area allocated to execution of the first job. If the SDRAM channels are different, the process advances to step S1010, and the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used.
On the other hand, if the required memory size cannot be allocated in step S1004, or if the SDRAM channel is the same as that of the area allocated to execution of the first job in step S1007, the process advances to step S1005. The CPU 101 decides an area corresponding to the second smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and determines in step S1005 whether or not a required memory size can be allocated from a WideIO-SDRAM channel included in that area. If the required memory size can be allocated, the process advances to step S1008, and the CPU 101 determines whether or not that SDRAM channel is the same as that of an area allocated to execution of the first job. If the SDRAM channels are different, the process advances to step S1011, and the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used.
On the other hand, if the required memory size cannot be allocated in step S1005, or if the SDRAM channel is the same as that of the area allocated to execution of the first job in step S1008, the process advances to step S1006. The CPU 101 decides an area corresponding to the third smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and determines in step S1006 whether or not a required memory size can be allocated from a WideIO-SDRAM channel included in that area. If the required memory size can be allocated, the process advances to step S1009, and the CPU 101 determines whether or not that SDRAM channel is the same as that of an area allocated to execution of the first job. If the SDRAM channels are different, the process advances to step S1012, and the CPU 101 allocates an address area allocated to that WideIO-SDRAM channel as an area to be used.
On the other hand, if the required memory size cannot be allocated in step S1006, or if the SDRAM channel is the same as that of the area allocated to execution of the first job in step S1009, the process advances to step S1013. In step S1013, the CPU 101 decides an area corresponding to the fourth smallest amount of generated heat from the calculated information of amounts of generated heat of areas A to D, and allocates that area as that to be allocated to the second conflict execution job.
Since processes of steps S1014 and S1015 are the same as those of steps S911 and S912 in
Details of the respective processes will be described below taking practical examples of jobs. This embodiment will explain two cases in which either of a ScanToBox job and PDLPrint job is input first in association with a WideIO-SDRAM channel priority setting method when these jobs described in the first embodiment are operated in conflict with each other.
A case will be explained first wherein the ScanToBox job is input first, and the PDLPrint job is then input to cause an operation conflict. The WideIO-SDRAM channel priority setting method when the ScanToBox job is input has already been described in the first embodiment, and address area 3 (channel 3) corresponding to area C is used. Next, processing executed when the PDLPrint job is operated as a conflict execution job to the ScanToBox job will be described below.
In step S1001, the CPU 101 extracts function blocks used in the PDLPrint job as a second conflict execution job. Furthermore, in steps S1002 and S1003, the CPU 101 calculates amounts of generated heat of areas A to D upon execution of the second conflict execution job, and a total of the amounts of generated heat of the two jobs. More specifically, as can be seen from the information of the table 801, when function blocks used by the ScanToBox job and PDLPrint job are operated, areas A1, A3 to A9, B1, B2, B4 to B9, C1, C2, C3 to C9, and D3 to D9 are activated. Therefore, relative amounts of heat generated on areas A to D of the SOC die 201 as a result of the conflict operations of these two jobs are respectively calculated as A=13, B=15, C=14, and D=11.
Therefore, when the PDLPrint job input later is operated as a conflict to the ScanToBox job input earlier, the CPU 101 determines address area 4 (channel 4) corresponding to area D as a first candidate in step S1004. If the CPU 101 determines that address area 4 can be allocated, since this address area is different from that allocated for the ScanToBox job input earlier, address area 4 is allocated intact to the PDLPrint job.
A case will be described below wherein the PDLPrint job is input first, and the ScanToBox job is then input to cause an operation conflict. The WideIO-SDRAM channel priority setting method when the PDLPrint job is input has already been described in the first embodiment, and address area 4 (channel 4) corresponding to area D is used. Next, processing executed when the ScanToBox job is operated as a conflict execution job to the PDLPrint job will be described below.
In step S1001, the CPU 101 extracts function blocks used in the ScanToBox job as a second conflict execution job. Furthermore, in steps S1002 and S1003, the CPU 101 calculates amounts of generated heat of areas A to D upon execution of the second conflict execution job, and a total of the amounts of generated heat of the two jobs. More specifically, as can be seen from the information of the table 801, when function blocks used by the ScanToBox job and PDLPrint job are operated, areas A1, A3 to A9, B1, B2, B4 to B9, C1, C2, C3 to C9, and D3 to D9 are activated. Therefore, relative amounts of heat generated on areas A to D of the SOC die 201 as a result of the conflict operations of these two jobs are respectively calculated as A=13, B=15, C=14, and D=11.
Therefore, when the ScanToBox job input later is operated as a conflict to the PDLPrint job input earlier, the CPU 101 determines address area 4 (channel 4) corresponding to area D as a first candidate in step S1004. If the CPU 101 determines that address area 4 can be allocated, this address area is the same as that allocated for the PDLPrint job input earlier. In order to avoid heating of the memory device itself from using the same area as a result of job conflict, the CPU 101 determines address area 1 (channel 1) corresponding to area A as a second candidate as an area to be allocated to the ScanToBox job in step S1005. In this case, when the CPU 101 determines that address area 1 can be allocated, since this address area is different from that allocated for the PDLPrint job input earlier, address area 1 is allocated intact to the ScanToBox job.
As described above, according to this embodiment, even when a plurality of jobs are simultaneously and parallelly executed, an abrupt local temperature rise due to concentrated use of a memory device of the same area (channel) can be precisely prevented. Hence, power consumption can be reduced, and a memory access performance drop can be suppressed.
The third embodiment of the present invention will be described below with reference to
In order to solve the problem upon execution of a conflict, a channel to be used may be judged additionally in consideration of temperatures of areas. This embodiment will explain a priority setting method of a WideIO-SDRAM channel to be used additionally in consideration of temperature information of respective areas upon execution of a plurality of jobs with reference to the flowchart of
In the second embodiment, after a use channel candidate, an area of which can be allocated, is decided in steps S1004 to S1006, whether or not the decided channel candidate is an area used by a first job input earlier is determined in steps S1007 to S1009. On the other hand, in this embodiment, in place of determination as to whether or not the decided channel candidate is an area used by a first job input earlier, the temperature of the corresponding area is measured by the temperature sensors 309 to 312. Then, the CPU 101 determines in steps S1101 to S1103 whether or not the temperature value is not more than a predetermined value, and determines based no this determination result whether or not the use channel candidate is allocated. Thus, a heating state of the first job input earlier can be recognized with high precision, and a channel to be used can be controlled based on the measurement result.
Aspects of the present invention can also be realized by a computer of a system or apparatus (or devices such as a CPU or MPU) that reads out and executes a program recorded on a memory device to perform the functions of the above-described embodiment(s), and by a method, the steps of which are performed by a computer of a system or apparatus by, for example, reading out and executing a program recorded on a memory device to perform the functions of the above-described embodiment(s). For this purpose, the program is provided to the computer for example via a network or from a recording medium of various types serving as the memory device (for example, computer-readable medium).
While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all such modifications and equivalent structures and functions.
This application claims the benefit of Japanese Patent Application No. 2012-261626 filed on Nov. 29, 2012, which is hereby incorporated by reference herein in its entirety.
Number | Date | Country | Kind |
---|---|---|---|
2012-261626 | Nov 2012 | JP | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/JP2013/081574 | 11/19/2013 | WO | 00 | 8/1/2014 |