标签: processor

如何在硬件级别上实现轮班?

当转换的数量未知时,如何在硬件级别实现位移?

我无法想象你可以转换的每个数字都会有一个单独的电路(这将是64位机器上的64个移位电路),我也无法想象这将是一个移位循环(这将是在64位机器上最多需要64个换档周期.这是两者之间的某种妥协,还是有一些聪明的伎俩?

cpu processor circuit bit-shift alu

12
推荐指数
1
解决办法
6930
查看次数

如何发现我的CPU是32位还是64位?

如何确定我的处理器是32位还是64位(用您选择的语言)?我想知道英特尔和AMD处理器的这个.

language-agnostic processor

11
推荐指数
2
解决办法
3178
查看次数

ARM模式和为什么有这么多?

我正在阅读/学习ARM架构......我想知道为什么有这么多模式(FIQ,用户,系统,主管,IRQ ......).

我的问题是为什么我们需要这么多模式?用户和系统不仅仅够用吗?

提前致谢.

arm processor mode

11
推荐指数
2
解决办法
4491
查看次数

Tomcat 7或Tomcat 6的最低和建议要求

tomcat 6或Tomcat 7的最低和建议要求是什么?请提供内存要求,磁盘空间要求和处理器要求?

memory tomcat processor

11
推荐指数
3
解决办法
5万
查看次数

在"application.conf"文件中从DEV更改为PROD模式时会发生什么?

我正在使用Play框架1.2.5,过去两天我在负载测试方面遇到了一个非常大的问题,即每次调用服务器的API都需要大约1200-1400ms的平均值,但今天我只更改了以下一行在application.conf文件中 ,它将平均时间大大缩短到20-50毫秒,该行如下,

  application.mode=prod
  %prod.application.mode=prod
Run Code Online (Sandbox Code Playgroud)

最初它就像

  application.mode=dev 
  %prod.application.mode=prod
Run Code Online (Sandbox Code Playgroud)

所以从中我可以理解,从开发到生产的变化使得我在互联网上找到的东西是,在开发模式下,play.pool = 1默认情况下,而在生产模式中,play.pool = no of processors + 1,我的ubuntu机器是4处理器所以它使用5个线程.现在来的问题,如果我发现了什么,然后当我在手动更改play.pool = 5是真的application.conf不给我一个更快的结果既不如果我设置play.pool = 1,并在生产模式下运行也不会减慢我的应用程序负载测试结果,所以我需要知道当我从dev更改为prod模式时会发生什么,除了这个play.pool使我的应用程序更快.因为我面临的问题在UAT中,在prod模式下也没有好的结果,它只能在我的localhost.please中找到我的解决方案.

更新:

是的我知道所有这些东西,如DEV模式,应用程序重新加载和编译,但也许它不是每个请求只在初始程序加载我认为,但我的问题是这个prod模式在我的localhost和我的本地正常工作服务器,当我去UAT时,我在负载测试中得到的结果差不多800平方米左右.甚至在prod中应用程序也很慢,即使我在本地执行loadtest(jmeter安装在服务器机器上,我使用远程桌面连接对其进行负载测试).所以除了编译和重新加载之外,我需要知道当我从DEV更改为PROD模式时,在application.conf文件中执行的所有更改是什么,就像play.pool从1个线程更改为(没有处理器+ 1)线程. 仅供参考:我的localhost系统是4处理器机器,本地服务器机器是4处理器,但UAT机器是2处理器,如果这是问题我甚至尝试将池线程更改为10(play.pool = 10)并且没有在UAT取得好成绩.

processor playframework playframework-1.x

11
推荐指数
1
解决办法
2846
查看次数

在编译时有条件地删除Java方法

我试图实现类似于C#预处理器的东西.我知道Java没有相同的预处理器功能,并且我知道有很多方法可以使用Factory等设计模式来实现类似的结果.但是,我仍然有兴趣找到这个问题的解决方案.

目前,我所做的是创建一个包含几个静态最终布尔属性的类,例如以下示例:

public class Preprocessor
{
  public static final boolean FULLACCESS = false;
}
Run Code Online (Sandbox Code Playgroud)

然后我以下列方式使用它:

public ClassName getClassName()
{
    if(Preprocessor.FULLACCESS)
    {
        return this;
    }
    else
    {
        return this.DeepCopy();
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这很好,这解决了我的问题(上面的例子是微不足道的,但我确实在其他有用的情况下使用它).我的问题是,是否有办法将条件置于整个方法周围,以便在给定正确的"预处理器"变量的情况下方法本身不可用?例如,我希望能够使特定的构造函数仅适用于给定"完全访问"的包,如下所示:

public ClassName()
{
    // do things
}

if(FULLACCESS)
{
public ClassName(ClassName thing)
{
    // copy contents from thing to the object being created
}
}
Run Code Online (Sandbox Code Playgroud)

我再次意识到Java作为一种语言的局限性(或设计决策),并且我知道在大多数情况下这是不必要的.事实上,我已经考虑过简单地创建这些"额外"方法并将它们的整个代码放在条件中,同时如果条件不活动则抛出异常,但这是一个非常粗略的解决方案似乎没有用处当我向他们提供这些库时,我的程序员.

非常感谢您提前寻求帮助.

编辑:

为了补充这个问题,我试图这样做的原因是,通过使用异常作为解决方案,IDE实际上不会将方法显示为"可用".然而,再一次,它可能仅仅是我对Java的无知.

我想要这样做的原因主要是因为我可能有多个公共接口可用,例如,一个限制性,其中控制在方法中更严格,另一个允许直接改变属性.但是,我也希望能够从.class中主动删除部分代码,例如,在某些变体不可用的产品线开发方法中.

EDIT2:

此外,重要的是要注意我也将有条件地生成文档.因此,每个编译版本的软件包都有自己的文档,只包含实际可用的文档.

java preprocessor processor conditional-compilation

11
推荐指数
2
解决办法
763
查看次数

为什么我的处理器没有内置的BigInt支持?

据我所知,BigInts通常在大多数编程语言中实现为包含数字的数组,例如:当添加其中两个时,每个数字都是一个接一个地添加,就像我们从学校知道的那样,例如:

 246
 816
 * *
----
1062
Run Code Online (Sandbox Code Playgroud)

其中*表示存在溢出.我在学校这样学习,所有BigInt添加函数我已经实现了类似于上面例子的工作.

所以我们都知道我们的处理器只能本地管理从0到2^32/的整数2^64.

这意味着大多数脚本语言为了高级并提供具有大整数的算术,必须实现/使用BigInt库,这些库使用整数作为上面的数组.但当然这意味着它们将比处理器慢得多.

所以我问自己的是:

  • 为什么我的处理器没有内置的BigInt功能?

它可以像任何其他BigInt库一样工作,只是(很多)更快,更低一级:处理器从缓存/ RAM中取一个数字,添加它,然后再将结果写回来.

对我来说似乎是一个好主意,为什么不是那样的?

processor biginteger cpu-architecture

10
推荐指数
2
解决办法
803
查看次数

字节码指令与处理器操作之间的关系

Java规范保证原始变量赋值总是原子的(期望long和双精度)types.

相反,对应于着名的增量操作的获取和添加操作i++将是非原子的,因为导致读 - 修改 - 写操作.

假设这段代码:

public void assign(int b) {
    int a = b;
}
Run Code Online (Sandbox Code Playgroud)

生成的字节码是:

public void assign(int);
    Code:
       0: iload_1       
       1: istore_2      
       2: return 
Run Code Online (Sandbox Code Playgroud)

因此,我们看到赋值由两个步骤组成(加载和存储).

假设这段代码:

public void assign(int b) {
        int i = b++;
}
Run Code Online (Sandbox Code Playgroud)

字节码:

public void assign(int);
    Code:
       0: iload_1       
       1: iinc          1, 1    //extra step here regarding the previous sample
       4: istore_2      
       5: return 
Run Code Online (Sandbox Code Playgroud)

知道X86处理器可以(至少是现代处理器)以原子方式操作增量操作,如上所述:

在计算机科学中,fetch-and-add CPU指令是一种特殊指令,它以原子方式修改存储器位置的内容.它用于在多处理器系统中实现互斥和并发算法,信号量的泛化.

因此,第一个问题:尽管字节码需要两个步骤(加载和存储),但是Java依赖于这样的事实:赋值操作是一个操作,无论处理器的体系结构如何都始终以原子方式执行,因此可以确保永久原子性(对于原始赋值) )在其规格?

第二个问题:用非常现代的X86处理器确认并且不跨不同架构共享编译代码是不对的,根本不需要同步 …

java x86 bytecode processor atomicity

10
推荐指数
2
解决办法
887
查看次数

更大的缓存大小是否总能提高性能?

由于处理器内的缓存增加了指令执行速度.我想知道如果我们将缓存的大小增加到许多MB,如1 GB.可能吗?如果它会增加缓存大小总是导致性能提高?

memory cpu caching processor

10
推荐指数
2
解决办法
2万
查看次数

什么是在多核处理器中改变核心负载和频率的原因

在寻找多核设计的描述后,我不断寻找几个图表,但所有图表看起来都像这样:

多核设计

通过查看i7z命令输出,我知道不同的内核可以以不同的频率运行.

这表明,关于哪个核心将被赋予新进程以及用于改变核心本身频率的决定可以通过操作系统或核心本身的控制块来完成.

我的问题是:什么控制每个核心的频率?是将READY进程与特定核心关联在操作系统上的工作,还是由处理器内的某些东西完成的工作.

operating-system multicore processor

10
推荐指数
1
解决办法
420
查看次数